求助一个结构体free()问题。
程序如下:
#include <stdio.h>
#include <stdlib.h>
typedef struct {
charrighter[10];
}Inf;
Inf* Create_Inf(Inf *inf, int num){
if(num <=0){/*只有一个节点*/
inf=(Inf *)malloc(sizeof(Inf));
}
else{/*有多个节点*/
inf=(Inf *)realloc(inf,sizeof(Inf));
}
return inf;
}
void main()
{
Inf *inf;
inf=Create_Inf(inf,0);
inf=Create_Inf(inf,1);
inf[0].righter[0]= '0 ';
inf[1].righter[0]= '2 ';这一行去掉就不报错了
free(inf);
}
报的错为:
Debug Error!
Programe: F:\go.exe
DAMAGE:after Normal block(#45) at 0x00431EA0
谢谢高手了!
[解决办法]
else{/*有多个节点*/
inf=(Inf *)realloc(inf,sizeof(Inf) * num);
}
[解决办法]
多个节点分配内存不够多