如何为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,其它的就不想看了,人生的差距最大不过如此……