當前位置:首頁 » 編程語言 » c語言內存分配失敗了
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言內存分配失敗了

發布時間: 2022-08-26 22:41:42

c語言鏈表不能分配內存

#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>

typedefstructAS{
intid;
charname[30];
structAS*next;
}stu;

stu*lb(intn){
stu*p,*head;
inti;
head=p=(stu*)malloc(sizeof(stu));
if(head==NULL){
printf("不能分配內存。 ");
exit(1);
}
head->id=0;
head->name[0]='';
for(i=0;i<n;i++){
p->next=(stu*)malloc(sizeof(stu));
if(p->next==NULL){
printf("不能分配內存. ");
exit(1);
}
printf("請輸入第%d個學生的學號和姓名:",i+1);
scanf("%d%s",&p->next->id,p->next->name);
p=p->next;
}
p->next=NULL;
returnhead;
}

voidShow(stu*head){
stu*p=head->next;
while(p){
printf("%d %s ",p->id,p->name);
p=p->next;
}
}

intmain(){
stu*head;
intn;
printf("請輸入學生個數:");
scanf("%d",&n);
head=lb(n);
Show(head);
return0;
}

Ⅱ c語言 malloc函數 內存動態分配失敗

內存分配失敗,是因為你的k為0,所以是分配0大小的內存,當然會失敗了。請採納。

Ⅲ 關於C語言動態分配內存,為什麼會發生錯誤

如果要在子函數中修改p的值,必須把p的指針傳過去,也就是說,這里必須是二級指針。
#include<malloc.h>
typedef struct {
float x,y;
}point;

void build_pol(point **p,int n)
{
int i;
float x,y;
*p=(point *)malloc(n*sizeof(point));
for(i=0;i<n;i++){
scanf("%f %f",&x,&y);
(*p)[i].x=x;(*p)[i].y=y;
}
}
int main()
{
int n,i;
point *p;
scanf("%d",&n);
build_pol(&p,n);
for(i=0;i<n;i++)
printf("%f %f\n",p[i].x,p[i].y);
getch();
return 0;
}

Ⅳ c語言malloc無法分配內存

動態分配的內存是不可以通過sizeof來確定大小的。或者說 所有的指針類型都不可以。
sizeof的結果是指針本身的大小,對於32為編譯器,都是4
只要你malloc的返回結果不是NULL,這個內存就可以放心的用了。

Ⅳ 數據結構 c語言 程序為何會分配內存失敗在線等

你確定這句是對的?
if(!(*G) || (*G)->vertex || (*G)->arcs)
{
printf("內存分配失敗!\n");
exit(OVERFLOW);
}
很明顯後面兩個條件寫反了.
還有就是int**不是數組指針哦(*G)->arcs[i][j]這樣子寫就有問題的.
int (*p)[10]這種才可以喲;
(int*)p[10]這種也可以
目測樓主已暈,我就不要打擊你了.

Ⅵ 關於C語言函數內部內存分配的幾個問題~~

1、可以用if代替assert斷言。
2、如果空間夠,分配就會失敗,malloc()會返回一個NULL指針。而free()函數對空指針沒有作用(相當於不調用free()函數)
3、如果分配失敗,就不用作清理工作(比如調用free()函數)。

Ⅶ 關於C語言動態內存分配失敗的問題

scanf("%d", &m, &n); //你輸入m和n的時候只輸入了m,n是個隨機值,大多數情況下這個值很大,m*n是個很巨大的數字,導致沒那麼多內存分配
scanf("%d%d", &m, &n); //都輸入