我想知道为什么会出现内存错误:
问题出现在char* value = aMap.find(keync)->second
如果我手动输入 char* value = "key0"就可以了!!!
using std::map;
map <char*, char*> aMap;
void search(const char* key) {
const int LEN = strlen(key);
char* keync = new char[LEN];
for (int i= 0; i < LEN; i++) {
keync[i] = key[i];
}
char* value = aMap.find(keync)->second;
printf("%s", value);
delete[] keync;
}
int _tmain(int argc, _TCHAR* argv[])
{
a["key0"] = "value0";
search("key0");
return 0;
}
最佳答案
数组长度需要加1:
char* keync = new char[LEN+1];
您在分配的字符串之外终止了 null。
(还有,你在初始化aMap吗?)
关于c++ - 使用 char* 变量查找不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3597828/