【发布时间】:2014-03-04 12:55:23
【问题描述】:
C 中的简单堆栈实现:
struct Stack {
char* data;
Stack* prev;
};
void push(char* data, Stack** stack) {
Stack* node = (Stack*)malloc(sizeof(Stack));
node->data = data;
node->prev = *stack;
*stack = node;
}
int main() {
Stack* top = NULL;
push("1", &top);
push("2", &top);
push("3", &top);
}
然后top->prev->prev->data 结果为3 与top->prev->data 和top->data 相同。
谁能解释一下原因?
【问题讨论】:
-
@unwind:很可能 kassie 正在使用 c++ 编译器来编译这段代码。否则会出现许多其他错误。
-
你传递给
push的缓冲区(指针)可能相同。我认为有必要通过保护新区域来复制内容。
标签: c pointers data-structures stack