如何为C语言的结构体数组分配/释放内存?
struct emp
{
char name[10];
float salary;
};
int main(int argc,char* argv[])
{
struct emp array_emp[1000000];
解决方案:2分
http://blog.csdn.net/q345852047/article/details/7348038
解决方案:30分
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#include <string.h>
struct emp {
char name[10];
float salary;
};
int main() {
struct emp *array_emp;
array_emp=malloc(1000000*sizeof(struct emp));
if (NULL==array_emp) {
printf("Can not malloc 1000000 emp!\n");
return 1;
}
strcpy(array_emp[999999].name,"123456789");
array_emp[999999].salary=50000.0f;
free(array_emp);
return 0;
}
解决方案:1分
第12行array_emp=malloc(1000000*sizeof(struct emp));
应改为
array_emp=(struct emp *)malloc(1000000*sizeof(struct emp));
解决方案:1分
也许PRO*C和标准C不同。每弄过PRO*C,爱莫能助。
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#include <string.h>
struct emp {
char name[10];
float salary;
};
int main() {
struct emp *array_emp;
int i;
array_emp=(struct emp *)malloc(1000000*sizeof(struct emp));
if (NULL==array_emp) {
printf("Can not malloc 1000000 emp!\n");
return 1;
}
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);
return 0;
}
//0 0 0.000000
//10000 10000 10000.000000
//20000 20000 20000.000000
//30000 30000 30000.000000
//40000 40000 40000.000000
//50000 50000 50000.000000
...
//
解决方案:1分
每弄过→没弄过
解决方案:1分
struct Point{
int x;
int y;
}
Point* pt;
pt = (Point*)malloc(10 * sizeof(Point));
//do sth
free(pt);
然后就可以用下标来操作了
pt[0].x = 12;
解决方案:1分
来看看11楼的回答
解决方案:1分
是因为只有1条数据的缘故吧
解决方案:1分
高手我这样定义似乎可以了,这样定义,我没法根据表的记录数来分配内存了,必须写死记录数了?
struct emp
{
char name[1000000][10];
float salary[1000000];
};
但是和如下定义有什么区别马?
struct emp_record
{
char name[10];
float salary;
};
个人感觉本质上来说没区别,但是一般不选择上面的,不方便。
解决方案:1分
看到5w的salary,其它的就不想看了,人生的差距最大不过如此……