字符串未正确存储在结构中

时间:2011-03-11 20:57:06

标签: c string memory struct storage

typedef struct class {
   char* CLASS_ID;
   char* CLASS_NAME;
}

什么会导致这两个字符串在30-40个不相关的代码行中丢失其值? (分配给从名为getString()的函数返回的指针)。

3 个答案:

答案 0 :(得分:2)

也许getString()返回一个指向静态分配缓冲区的指针,每次调用它时都会覆盖它的值?

也许你正在溢出一个数组并破坏你的堆栈或堆?

也许你正在存储一个指向堆栈上分配的字符串并且超出范围的指针?

有关getString()的更多信息或代码,有人可能会给你一个明确的答案。

答案 1 :(得分:1)

好吧,不知道如何实现getString()或任何其他代码,它可能是任何东西。这是C(过度)使用指针的问题的一部分。

我的第一个猜测是getString()实际上返回一个指向内部(static)字符串的指针,因此每个调用都会删除从最后一个检索到的值。

如果你实际上在使用C ++,那么我强烈建议你抛弃这段代码并改用std :: string。我打赌你的问题神奇地消失了。

答案 2 :(得分:0)

除了对方发布的内容之外,您还应避免使用classCLASS_IDCLASS_NAME等名称,因为它们可能包含在您可能包含的许多图书馆中#defined未来和调试几个小时,找出突然出现的问题。