c++ - 使用 char* 变量查找不起作用

标签 c++ find stdmap

我想知道为什么会出现内存错误:

问题出现在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/

相关文章:

c++ - CDialog更新输入框值

c++ - 在类方法名之后使用运算符和

c++ - 没有运算符 "="匹配这些操作数操作数类型是 std::basic_ostream<char, std::char_traits<char>> = int

c++ - <stdint.h> 还是标准类型?

linux - 从文件列表中查找多个目录中的文件?

C# 如何查找并替换字符串中的特定文本?

javascript - JavaScript 中的正则表达式 : Content Between Two Tags

c++ - 当将 `key/value` 插入到 `std::map` 时,它会制作自己的对象拷贝吗?

c++ - 在迭代它的同时插入到 std::map 中?

C++:从映射中删除迭代器,然后递增到下一个迭代器