这部分代码不断给我带来段错误。这是一个栈结构。为了进行测试,我只是创建了一个全局变量 top 来跟踪堆栈。当我用c++实现时,逻辑上没有问题,所以我不确定为什么会出现错误。谢谢。
struct v
{
char *value;
int ibase;
int obase;
struct v* next;
};
struct v* top = NULL;
void push(char* val, int ibas, int obas)
{
struct v* newstackptr;
newstackptr->next = top;
newstackptr->value= val;
newstackptr->ibase= ibas;
newstackptr->obase= obas;
top = newstackptr;
}
int main(){
char* value="111";
push(value,2,8);
return 0;
}
最佳答案
您声明了newstackptr
,但从未分配它,因此它具有未定义的内容,并且当您分配其属性时,您正在写入有效的随机内存。您需要分配它:
struct v* newstackptr = malloc(sizeof(*newstackptr));
并且您通常应该提高编译器的警告级别(例如,在编译 gcc
/clang
时传递 -Wall
),因为这种错误应该可以被你的编译器轻松识别。
关于c - 段错误: 11 for C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48892988/