std::map使用出错_Nodeptr _Pnode = _Root();

来源:互联网 发布:部落冲突龙宝升级数据 编辑:程序博客网 时间:2024/06/05 20:41

http://blog.csdn.net/wuhuiran/article/details/2122221


std::map使用出错_Nodeptr _Pnode = _Root();
今天遇到一个问题,使用map的时候出现“非法访问”的错误,错误代码在
_Nodeptr _Lbound(const key_type& _Keyval) const
       {   // find leftmost node not less than _Keyval
       _Nodeptr _Pnode = _Root();
       _Nodeptr _Wherenode = _Myhead; // end() if search fails
我是这样使用的。演示代码:
Std::map<int, int> map_test;
Map_test[1] = [2];
这样使用怎么看都没有错误啊,可是就是出错了还。这个郁闷啊。
一开始怀疑栈空间不够用,就改的很大,还是出错。
怀疑map内存被覆盖。后发现这个map只有在有的地方会出错,放别的地方就不会出错了。于是一点一点改变map在代码中的位置,最后终于找到了。原来我的一个字符串数组定义的500个字节,可是使用strcpy拷贝进入了一个700多字节的字符串,这样就把在其后面的map给覆盖了一部分内存,晕。(注:字符串数组【500】和map都是一个类的成员变量)
把字符串数组大小改为最大可能值,问题解决。


Add by shuixin536: 主要问题还是内存大小不一致的问题,从内存上去考虑

原创粉丝点击