溶液中发现奇怪的C++内存问题。常量指针被改变
问题描述: 我用一个旧的C库并具有这是接收一个const char *如在函数的自变量的类。该函数创建一个动态对象并使用const char *作为参数将其存储在链接列表中。
问题是,这样做后,传递给该函数的const char *在类外部的内存中被修改。这破坏了节点中的数据。
解决方案: 在类中使用std :: string作为数据类型。当const char *作为一个值传递给字符串时,字符串会为您处理内存管理。
我学到了什么? 使用C++时,总是使用字符串,如果需要在某个C库中使用,只能使用char *和string.c_str()。
谢谢你们。你救了我的周末。
你能想出一个更小的例子,展示相同的问题?你链接的代码太大了,我们无法弄清楚它有什么问题...... – Xymostech 2013-03-24 17:24:17
尝试使用valgrind。 – mfontanini 2013-03-24 17:25:44
在SO,你的问题必须是独立的,而不是指一些外部网站。所以你真的需要修改你的代码并发布相关的代码片段,最好是一个合适的SSCCE(http://sscce.org)。 – hyde 2013-03-24 17:26:28