std::map的KEY如果是char*,必须是malloc的

简介: std::map的KEY如果是char*,必须是malloc的
std::map<char*, GhRecord*>::iterator funcIter = g_oRecordFunctionMap.begin();
    while (funcIter != g_oFunctionMap.end())
    {
        GhRecord* pFuncRecord = funcIter->second;
        funcIter++;
        ...
    }

 出错的位置都是funcIter++处.有两种情形:

卡死.

崩溃.错误也是很奇怪:

#0  0x00007fcf790ff458 in std::less<char*>::operator() (
    this=0x7fcf79302420 <g_oRecordFunctionMap>, 
    __x=@0xf8: <error reading variable>, 
    __y=@0x7fcf45199060: 0x7fcf28042400 "tcpclient.c-tcpclient_recv-71")
    at /usr/include/c++/5/bits/stl_function.h:387
387       { return __x < __y; }
或者
_Rb_tree_increment(std::_Rb_tree_node_base const*) () from /usr/lib

 难道吾使用方式不对?吾反复核查,都没有发现问题.


 后来输出funcIter->first,发现是乱码.嗯?于是把KEY改成malloc()的,不再出错了.


 当然,改用std:;string应该也可以.

目录
相关文章
|
17天前
|
C++
【C++】std::string 转换成非const类型 char* 的三种方法记录
【C++】std::string 转换成非const类型 char* 的三种方法记录
7 0
map使用const char*作为key值查找注意事项
map使用const char*作为key值查找注意事项
用char*作为map的key
用char*作为map的key
63 0
|
8月前
|
存储 关系型数据库 MySQL
面试时被这样一个问:”存储MD5值应该用VARCHAR还是用CHAR?
一个5年工作经验的小伙伴,在面试的时候被这样一个问题。说”存储MD5值应该用VARCHAR还是用CHAR“,他一时间不只如何选择,感觉用VARCHAR也可以,用CHAR也行。希望我来帮忙分析一下。
71 0
|
4天前
|
存储 关系型数据库 MySQL
MySQL字段的字符类型该如何选择?千万数据下varchar和char性能竟然相差30%🚀
本篇文章来讨论MySQL字段的字符类型选择并深入实践char与varchar类型的区别以及在千万数据下的性能测试
MySQL字段的字符类型该如何选择?千万数据下varchar和char性能竟然相差30%🚀
|
1月前
|
存储 数据库
5. CHAR和VARCHAR的区别?
`CHAR`和`VARCHAR`在数据库中有所不同:`CHAR`长度固定,用空格填充,存储效率高,英文占1字节,汉字占2字节;而`VARCHAR`长度可变,节省空间,英文和汉字都占2字节。
16 0
|
1月前
|
存储 SQL NoSQL
面试题:char和varchar的区别?
字节面试题:char和varchar的区别?
28 0
|
2月前
|
存储 机器学习/深度学习 关系型数据库
mysql中char和varchar的区别
mysql中char和varchar的区别
35 1
|
8月前
|
存储 SQL 数据库
char、varchar、nvarchar、text的区别
char、varchar、nvarchar、text的区别
36 0
|
5月前
|
存储 关系型数据库 MySQL
MySQL之varchar和char的区别
MySQL之varchar和char的区别
18 0