typedef struct class {
char* CLASS_ID;
char* CLASS_NAME;
}
什么会导致这两个字符串在30-40个不相关的代码行中丢失其值? (分配给从名为getString()的函数返回的指针)。
答案 0 :(得分:2)
也许getString()返回一个指向静态分配缓冲区的指针,每次调用它时都会覆盖它的值?
也许你正在溢出一个数组并破坏你的堆栈或堆?
也许你正在存储一个指向堆栈上分配的字符串并且超出范围的指针?
有关getString()的更多信息或代码,有人可能会给你一个明确的答案。
答案 1 :(得分:1)
好吧,不知道如何实现getString()
或任何其他代码,它可能是任何东西。这是C(过度)使用指针的问题的一部分。
我的第一个猜测是getString()
实际上返回一个指向内部(static
)字符串的指针,因此每个调用都会删除从最后一个检索到的值。
如果你实际上在使用C ++,那么我强烈建议你抛弃这段代码并改用std :: string。我打赌你的问题神奇地消失了。
答案 2 :(得分:0)
除了对方发布的内容之外,您还应避免使用class
,CLASS_ID
和CLASS_NAME
等名称,因为它们可能包含在您可能包含的许多图书馆中#defined
未来和调试几个小时,找出突然出现的问题。