如何为C语言的结构体数组分配/释放内存?
structemp
{
charname[10];
floatsalary;
};
intmain(intargc,char*argv[])
{
structemparray_emp[1000000];
解决方案:2分
/q345852047/article/details/7348038
解决方案:30分
#include
#include
#include
#include
structemp{
charname[10];
floatsalary;
};
intmain(){
structemp*array_emp;
array_emp=malloc(1000000*sizeof(structemp));
if(NULL==array_emp){
printf("Cannotmalloc1000000emp!\n");
return1;
}
strcpy(array_emp[999999].name,"123456789");
array_emp[999999].salary=50000.0f;
free(array_emp);
return0;
}
解决方案:1分
第12行array_emp=malloc(1000000*sizeof(structemp));
应改为
array_emp=(structemp*)malloc(1000000*sizeof(structemp));
解决方案:1分
也许PRO*C和标准C不同。每弄过PRO*C,爱莫能助。
#include
#include
#include
#include
structemp{
charname[10];
floatsalary;
};
intmain(){
structemp*array_emp;
inti;
array_emp=(structemp*)malloc(1000000*sizeof(structemp));
if(NULL==array_emp){
printf("Cannotmalloc1000000emp!\n");
return1;
}
for(i=0;i<1000000;i+=10000){
sprintf(array_emp[i].name,"%d",i);
array_emp[i].salary=(float)i;
}
for(i=0;i<1000000;i+=10000){
printf("%d%s%f\n",i,array_emp[i].name,array_emp[i].salary);
}
free(array_emp);
return0;
}
//000.000000
//100001000010000.000000
//200002000020000.000000
//300003000030000.000000
//400004000040000.000000
//500005000050000.000000
...
//
解决方案:1分
每弄过→没弄过
解决方案:1分
structPoint{
intx;
inty;
}
Point*pt;
pt=(Point*)malloc(10*sizeof(Point));
//dosth
free(pt);
然后就可以用下标来操作了
pt[0].x=12;
解决方案:1分
来看看11楼的回答
解决方案:1分
是因为只有1条数据的缘故吧
解决方案:1分
高手我这样定义似乎可以了,这样定义,我没法根据表的记录数来分配内存了,必须写死记录数了?
structemp
{
charname[1000000][10];
floatsalary[1000000];
};
但是和如下定义有什么区别马?
structemp_record
{
charname[10];
floatsalary;
};
个人感觉本质上来说没区别,但是一般不选择上面的,不方便。
解决方案:1分
看到5w的salary,其它的就不想看了,人生的差距最大不过如此……