首页 > 电脑

c语言内存分配失败

更新时间2019-08-29 05:20:06

下面这个程序运行了就显示“不能成功分配存储块”,有没有大佬知道怎么回事?
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
struct num {
int number;
struct num *next;
};
int size=sizeof(struct num);
void main()
{
int i;
struct num *list1=NULL,*list2=NULL,*list=NULL,*p1,*p2=NULL,*p3,*p4=NULL;
struct num *insert(struct num *list1,struct num *list2);
for(i=1;i<=5;i++){
if((p1=(struct num *)malloc(size))==NULL){
printf("不能成功分配存储块! ");
exit(0);
}
p1->next=NULL;
p1->number=2*i-1;
if(i=1)list1=p1;
else p2->next=p1;
p2=p1;
}
for(i=1;i<=5;i++){
if((p3=(struct num *)malloc(size))==NULL){
printf("不能成功分配存储块! ");
exit(0);
}
p3->next=NULL;
p3->number=2*i;
if(i=1)list2=p3;
else p4->next=p3;
p4=p3;
}
list=insert(list1,list2);
while(list!=NULL){
printf("%d/n",list->number);
list=list->next;
}
}
struct num *insert(struct num *list1,struct num *list2)
{
struct num *p0,*p1,*p2;
p1=list1;
while(list2!=NULL){
p0=list2;
while((p0->number>p1->number)&&(p1->next!=NULL)){
p2=p1;p1=p1->next;
}
if(p0->number>p1->number){
p1->next=p0;p0->next=NULL;
}
else if(list1=p1){
p0->next=list1;list1=p0;
}
else{
p2->next=p0;p0->next=p1;
}
list2=list2->next;
}
return list1;
}

程序至少有一个基础的错,c语言条件运算符你还是用错的

c语言的等于比较要用==,你用了=,这个是赋值

相关标签:内存c语言

上一篇:java(大神们帮帮小弟吧,为什么没有运行结果,谢谢!!!)

下一篇:转行IT是自学好?还是培训好?