string:c_str返回不可访问的内存解决思路
string::c_str返回不可访问的内存最近程序的崩溃一直困扰着我,都是发生在访问string::c_str返回的字符串时
string::c_str返回不可访问的内存 最近程序的崩溃一直困扰着我,都是发生在访问string::c_str返回的字符串时,访问内存无效,有时甚至是0x10000以下的地址。我是直接返回string变量的c_str(),string变量的生存期都还在。可不可以认为是堆内存被破坏了,这种问题应该怎么跟踪?[解决办法] http://topic.csdn.net/u/20110330/22/85079fde-6e94-41c4-af45-3f070268c22b.html 看看,对你会有帮组的···[解决办法] 我是直接返回string变量的c_str(),string变量的生存期都还在???等待其他牛人回答···
探讨 http://topic.csdn.net/u/20110330/22/85079fde-6e94-41c4-af45-3f070268c22b.html 看看,对你会有帮组的···[解决办法] The member function returns a pointer to a nonmodifiable C string constructed by adding a terminating null element (E(0)) to the controlled sequence. Calling any non-const member function for *this can invalidate the pointer.
http://topic.csdn.net/u/20071003/14/e7ed177e-07a7-4dd8-954f-af949ca54377.html
[解决办法] 或者参考 http://www.cplusplus.com/reference/string/string/c_str/
[解决办法] 会不会是别的某个地方内存越界引起的?
最好有个例子。
[解决办法] 额,只是不是new出来的。超出变量的作用域。这个变量就不存在了···
探讨 引用: 我是直接返回string变量的c_str(),string变量的生存期都还在???等待其他牛人回答··· 引用: http://topic.csdn.net/u/20110330/22/85079fde-6e94-41c4-af45-3f070268c22b.html 看看,对你会有帮组的··· ……[解决办法] 如果那个string变量的内容改变了的话,那么之前c_str()返回的指针可能就会失效
[解决办法] 多线程程序?std::string的很多实现是使用了引用计数的。
加锁吧。
[解决办法] 没看到代码不好判断
[解决办法] 在你访问那个无效地址前,加个断点,看看能否正常访问那个string变量
[解决办法] 探讨 引用: 在你访问那个无效地址前,加个断点,看看能否正常访问那个string变量 可以访问[解决办法] 看看你编译配置,是否正确。另外就是clear一下,重新编译运行。这种情况一般是由于编译器或设置的问题。不知道你真实的环境是什么,所有没法定位
[解决办法] 下内存断点调试,看看哪个调用修改了那块内存,绝大多数情况是越界引起的,可能某段代码在运行时(尤其是多线程下)存在越界,可能一次一字节,总会覆盖到某些靠近的内存空间,引起诡异di崩溃,很难跟
[解决办法] 你看下是不是跨dll使用了string吧
[解决办法] 探讨 额,只是不是new出来的。超出变量的作用域。这个变量就不存在了···引用: 引用: 我是直接返回string变量的c_str(),string变量的生存期都还在???等待其他牛人回答··· 引用: http://topic.csdn.net/u/20110330/22/8……[解决办法] 哈哈,根据21楼的启示,已经为楼主找到解决方法。
编译器->窗口->调试->内存调试
监控查看string的地址变化