我已在此处粘贴代码*stack_ptr->s3++ = element;
分段错误正在发生。你能告诉我应该怎样改变以消除错误吗?
typedef int stack_elmnt_int;
typedef struct {
stack_elmnt *s1;
stack_elmnt_int *s3;
int length;
int top;
} stack;
int push_stack_int(stack *stack_ptr, stack_elmnt_int element)
{
int i=0;
if (stack_full(stack_ptr))
printf("\nStack is full.");
else{
*stack_ptr->s3++ = element;
}
}
void main()
{
int arr[128], arr_num = sizeof(arr)/sizeof(int);
//after input from user to arr
//partial code pasted here
for(i=0;i<arr_num ;i++)
push_stack_int(&stack_1,arr[i]);
}
答案 0 :(得分:3)
语句
(*stack_ptr->s3++ = element;)
发生了细分错误,
可能你没有为s3
分配内存。
*stack_ptr->s3++ = element;
^
| assigning to garbage location
请您告诉我应该更改哪些消除错误?
在声明stack_1
为s3
分配内存之后的main()函数中(你也应该为s1
分配内存),请执行以下操作:
stack_1.s3 = calloc(MAX_NUMBER_OF_ELEMENT, sizeof( stack_elmnt_int));
此外,您不应该增加s3
指针。 (你将失去起始地址)喜欢:
stack_ptr->s3[top++] = element;
答案 1 :(得分:0)
您需要检查stack_ptr
和stack_ptr->s3
是否已分配内存并已在代码中初始化。