分段故障:11



代码的这一部分不断给我分割故障。这是一个堆栈结构。为了进行测试,我刚刚制作了全球变量顶部以跟踪堆栈。当我在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(,因为编译器应在编译器上可以在微不足道上识别此类错误。

相关内容

  • 没有找到相关文章

最新更新