如何为C语言的结构体数组分配/释放内存?

C语言 码拜 6年前 (2015-10-08) 1149次浏览
如何为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,其它的就不想看了,人生的差距最大不过如此……


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明如何为C语言的结构体数组分配/释放内存?
喜欢 (0)
[1034331897@qq.com]
分享 (0)