char* 的若干问题之一

 //十进制转二进制
char* decimal2binary( int numth) 
{
	string key; 
	bitset<4> t;
	t = numth;
	key = t.to_string();
	char* ch = const_cast<char*>(key.c_str());		//const char* 转 char*
	return ch;
}








有如下调用:

char **libraryKeys;
libraryKeys = (char**)malloc(10*sizeof(char*));
int j;
for(j = 0; j < 10; j++){
	libraryKeys[j] =  (char*)malloc(4*sizeof(char));
	libraryKeys[j]  = decimal2binary(j);	
}
//结果得到的libraryKeys十个值均为1001(即循环最后一次十进制9转换的二进制值)


改为如下即可:
char **libraryKeys;
libraryKeys = (char**)malloc(10*sizeof(char*));
int j;
char* key = new char[4];
for(j = 0; j < numKeys; j++){
	libraryKeys[j] = (char*)malloc(4*sizeof(char));
	key = decimal2binary(j);	
	strcpy(libraryKeys[j],key);
}

相关文章

文章浏览阅读2.3k次,点赞4次,收藏22次。最近安装了CARLA预...
文章浏览阅读6.3k次,点赞5次,收藏15次。在清华镜像中下载U...
文章浏览阅读5k次。linux环境, python3.7.问题描述: 安装...
文章浏览阅读4.2k次,点赞4次,收藏17次。要安装这个 standa...
文章浏览阅读894次,点赞51次,收藏31次。在安卓使用vscode主...