关于动态内存分配和数组的选用(变长选malloc,定长选数组)

来源:互联网 发布:淘宝积分卖家页面 编辑:程序博客网 时间:2024/05/22 06:08

结论在最后,可直接看最后。

工作中遇到了一个这样的问题。

需要在 一个结构体后面 绑定一个变量,但不能对原结构体进行修改。

比如说:

Struct ss{

Int a;

Char b;

Float c;

};

在这个结构体内部不变的情况下,需要在其后绑定一个 double  d的变量。API的入口参数不变,要求在API内部进行绑定。

 

我最开始的思路是:

这个问题需要考虑的是,要在原结构体的尾部,增加字节,以便绑定信息。所以,很容易就想到mallorealloc。最后选用malloc。先分配足够大小的动态内存,然后将得到的地址指向原结构体。紧接着偏移sizeof(原结构体)的大小,赋值d。这样就拼接成了一个新的结构体。

 

很快就完成了这个函数的更改,测试通过。

 

报告上司,很快过来查看代码。看看了,问我:“malloc是干嘛的?”我:“啊?动态内存分配啊” 问:“你知道什么时候采用动态内存分配么?”我:“额,。。。。。。”。老大说:“动态内存分配,肯定是变长的时候使用。咱们现在这个改动属于固定长度,所以,动态内存分配不是最好的一种选择。” “那,,用数组?”我脱口而出道。 老大看了看我说:“对。并且为了代码可读性,你应该在定义一个结构体,比之前结构体多一个变量定义。然后,直接对其赋值就ok了,这样,后面维护的人看到你的代码也会更清晰明白。”我若有所思的点了点头,说:“立马就修改!”

 

 

所以,动态内存和数组的选用,很好理解。

1:当变量长度是变长的时候,最好使用动态内存分配。

否则,用数组申请,小了,不够用。大了,浪费空间。

2:当变量长度是定长的时候,最好使用数组来申请连续空间的内存。

    动态内存也可以,但会浪费堆栈资源,效率没有数组高。

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 老妈怨气太重怎么办 广东小高考有d怎么办 高考考生档案袋有个小洞怎么办 江苏省考生出省后小高考成绩怎么办 江苏小高考三D怎么办 小高考补考没过怎么办 理科高考200多分怎么办 高考没考过200分怎么办 电子手表指针不走了怎么办 家长说你教的不好怎么办 小升初分班考试考砸了怎么办 老公不给老婆看病怎么办 孕妈妈涨奶严重怎么办 90岁老头尿不下尿怎么办 妻子要离婚丈夫不离怎么办 弟媳妇天天在家吵架怎么办 弟媳妇不和我说话怎么办 我想和弟媳妇做一次怎么办 老公对弟媳妇有非分之想怎么办 跟弟媳妇有矛盾怎么办 学生考试前不认真怎么办 有人雇凶要杀我怎么办 高考理综数学英语都没考好怎么办 母亲判刑孩子未成年无人监管怎么办 高三了数学30分怎么办 母猪发烧耳朵放血止不住了怎么办? 青春期孩子动手打父母该怎么办 20岁睡觉不老实怎么办 孕妇梦见钱掉了怎么办 小孩晚上睡觉鼻子塞怎么办 宝宝晚上睡觉鼻子塞怎么办 按摩后吹冷气发冷怎么办 碰到特别细心敏感的下属怎么办 睡觉压的肩膀疼怎么办 睡觉感觉被压住动弹不得怎么办 越想睡觉越睡不着怎么办 腿被裤子染黑了怎么办 肚子上的松皮怎么办 在公司天天背锅怎么办 职场老实背锅怎么办 三星a8充不了电怎么办