首页 > 编程知识 正文

段错误怎么解决,malloc失败的原因

时间:2023-05-05 08:56:29 阅读:49707 作者:4224

使用malloc函数发生段错误的typedef struct{ int top; int tail; int* stk; (}队列; 类型结构{ queue * in; 队列*输出; }堆叠; voidenterqueue(queue*obj,int x ) { obj-stk[obj-top]; obj-tail; }intexitqueue(queue*obj ) { int resual=obj-stk[obj-top]; obj-top; 返回re sual; }/* * initializeyourdatastructurehere.*/mystack* mystack create ((mystack * mystack=) mystack * ) malloc ) sizeof mystack-in=(queue* ) malloc (sizeof ) queue ); 多合一STK=(int * ) malloc ) sizeof(int ) ) 20; myStack-In-top=0; myStack-In-tail=0; 堆叠-出=(队列* ) malloc (大小)队列); 堆叠-出站=(int * ) malloc ) sizeof(int ) * 20 ); myStack-Out-top=0; myStack-Out-tail=0; 返回堆栈; }int main () { MyStack* create=myStackCreate ); 堆叠推送(create,666 ); printf('%dn ',退出队列) (创建-输出); }上面的代码没有错误,而下面的代码有错误

类型结构{ int top; int tail; int* stk; (}队列; 类型结构{ queue * in; 队列*输出; }堆叠; voidenterqueue(queue*obj,int x ) { obj-stk[obj-top]; obj-tail; }intexitqueue(queue*obj ) { int resual=obj-stk[obj-top]; obj-top; 返回re sual; }/* * initializeyourdatastructurehere.*/mystack * mystack create ({ mystack * mystack; //这里没有申请使指针指向的数据有效的堆区域。 现在,我们请求堆栈空间来存储大小为MyStack*的数据(4字节,//printf('%dn ',sizeof ) )。 所以,打印值会出错。 打印(mystack-out : % dn )、mystack-out ); 打印(mystack-outaddris 3360 % dn ),mystack-out ); //系统中这些成员本来就没有分配空间,因此如果在打印邮件地址之前分配了空间,则可以使用mystack*mystack=(mystack* ) malloc () printf (堆叠、is:%d(n )、myStack-Out ); //其值是随机值,除非是静态区域的数据,否则随机值*/myStack-In=(Queue* ) malloc(sizeof ) queue ) ); 多合一STK=(int * ) malloc ) sizeof(int ) ) 20; myStack-In-top=0; myStack-In-tail=0; 堆叠-出=(队列* ) malloc (大小)队列); 堆叠-出站=(int * ) malloc ) sizeof(int ) * 20 ); myStack-Out-top=0; myStack-Out-tail=0; 返回堆栈; }int main () { MyStack* create=myStackCreate ); 堆叠推送(create,666 ); printf('%dn ',退出队列) (创建-输出); }这里还有一个,如果你这样MyStack* myStack=NULL; 结果也同样会出错。 因为在c语言中,NULL表示空指针,即((void* )0)。 一般在初始化指针时使用。

通过阅读以上内容,知道了为什么会发生段错误吗? 下面的链接也说了类似的问题

c语言在子函数中调用malloc申请内存的方法c语言在子函数中调用malloc申请内存发生段错误malloc申请内存的问题最后谈指针相关。 指针也是变量,还有值传递运算和地址传递运算。 有与上面链接相关的问题分析,加深对指针的理解

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。