关于动态内存分配和数组的选用(变长选malloc,定长选数组)
来源:互联网 发布:淘宝积分卖家页面 编辑:程序博客网 时间:2024/05/22 06:08
结论在最后,可直接看最后。
工作中遇到了一个这样的问题。
需要在 一个结构体后面 绑定一个变量,但不能对原结构体进行修改。
比如说:
Struct ss{
Int a;
Char b;
Float c;
};
在这个结构体内部不变的情况下,需要在其后绑定一个 double d的变量。API的入口参数不变,要求在API内部进行绑定。
我最开始的思路是:
这个问题需要考虑的是,要在原结构体的尾部,增加字节,以便绑定信息。所以,很容易就想到mallo和realloc。最后选用malloc。先分配足够大小的动态内存,然后将得到的地址指向原结构体。紧接着偏移sizeof(原结构体)的大小,赋值d。这样就拼接成了一个新的结构体。
很快就完成了这个函数的更改,测试通过。
报告上司,很快过来查看代码。看看了,问我:“malloc是干嘛的?”我:“啊?动态内存分配啊” 问:“你知道什么时候采用动态内存分配么?”我:“额,。。。。。。”。老大说:“动态内存分配,肯定是变长的时候使用。咱们现在这个改动属于固定长度,所以,动态内存分配不是最好的一种选择。” “那,,用数组?”我脱口而出道。 老大看了看我说:“对。并且为了代码可读性,你应该在定义一个结构体,比之前结构体多一个变量定义。然后,直接对其赋值就ok了,这样,后面维护的人看到你的代码也会更清晰明白。”我若有所思的点了点头,说:“立马就修改!”
所以,动态内存和数组的选用,很好理解。
1:当变量长度是变长的时候,最好使用动态内存分配。
否则,用数组申请,小了,不够用。大了,浪费空间。
2:当变量长度是定长的时候,最好使用数组来申请连续空间的内存。
动态内存也可以,但会浪费堆栈资源,效率没有数组高。
- 关于动态内存分配和数组的选用(变长选malloc,定长选数组)
- 动态内存的分配,包括 new delete malloc realloc free,一维数组和二维数组
- 指针数组的malloc分配内存例子
- 变长数组(动态数组)
- C++内存分配及变长数组的动态分配
- C99中变长数组的内存分配策略
- C++内存分配及变长数组的动态分配
- C/C++动态内存分配之用malloc和指针实现动态数组排序
- 数组的动态内存分配
- 数组的动态内存分配
- C语言中多维数组的内存分配和释放(malloc与free)(转)
- C语言中多维数组的内存分配和释放(malloc与free)
- C++primer 4.3 动态数组、动态内存分配(C里面)malloc、 free
- 关于结构体数组动态内存分配
- 动态数组分配内存
- 动态内存分配数组
- 动态内存分配 数组
- 二维数组的动态内存分配和释放
- 软件架构原则
- 五个不为人知的ESC键妙用
- 17周项目二 指针玩字符串1-1 数组做形参实现连接
- 客户经理年终总结人事专员年终总结范文
- 解锁不能复制的网页
- 关于动态内存分配和数组的选用(变长选malloc,定长选数组)
- win7 C++ImageMagick配置
- 数据挖掘之路
- Object-c中的initialize 与 单例
- 事务的配置Aop
- uva10534 LISDP
- tokumx操作语句
- Fn键的作用大全
- Linux 中的计时