#define INIT_STACK_SIZE 100
//栈的创建
InitStack(sqStack s)
{
s->base=(ElemType)malloc(INIT_STACK_SIZE*sizeof(ElemTpye));
if(!s->base)
{
printf("创建栈失败!\n");
exit(0);
}
s->top=s->base;
s->stacksize=INIT_STACK_SIZE;
}
请问这里的
if(!s->base)
{
printf("创建栈失败!\n");
exit(0);
}
存在的意义是什么?
既然已经创建了s->data并为其分配空间,那么为什么还会存在其不存在的情况?
malloc/calloc/realloc都是向系统申请内存的,申请可能因为某些原因失败
失败可能
如果不在申请后判断是否为空,就有可能出现操作null指针的情况
动态内存管理可以看看我的博客👉https://blog.csdn.net/muxuen/article/details/122744394
最后,请使用代码块粘贴你的代码,方便你我他!
malloc是向堆申请内存,这个内存是由系统内核管理的,可能会出现失败的情况,虽然大小100,malloc失败的概率非常低,但是这是一个好习惯