加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

C中什么时候需要malloc?

发布时间:2020-12-16 05:37:30 所属栏目:百科 来源:网络整理
导读:我认为所有malloc(sizeof(structure))都可以这样替换: char[sizeof(structure)] 那么malloc何时需要? 解决方法 当你不知道你需要多少对象(例如链表) 当您需要仅在运行时(例如基于未知输入的字符串)具有尺寸已知的数据结构时;这在C99中引入了VLA有一些缓解,
我认为所有malloc(sizeof(structure))都可以这样替换:
char[sizeof(structure)]

那么malloc何时需要?

解决方法

>当你不知道你需要多少对象(例如链表)
>当您需要仅在运行时(例如基于未知输入的字符串)具有尺寸已知的数据结构时;这在C99中引入了VLA有一些缓解,但是请看下面的一点:
>当你在编译时知道他们的大小(或者你可以使用VLA),但它对于堆栈来说太大了(通常最多为几MB),这样做是没有意义的(例如大的向量来操纵);
>当您需要一个生命周期与自动变量不同的对象时,该自动变量可以具有(例如,必须是数据的数据),这些变量在范围限制(=>在执行退出自己的范围时被销毁)在具有不同生命周期的不同对象之间共享,并且在没有人再使用它的情况下被删除).

请注意,没有动态内存分配(例如,整个Rockbox项目几乎没有它)几乎没有完全是不可能的,但是有些情况下,您实际上需要使用大型静态缓冲区并编写自己的分配器来模拟它.

顺便说一下,在C中你永远不会使用malloc()/ free(),而是运算符new和delete.

相关:在没有malloc的情况下尝试工作的a case已被证明是一个很大的混乱.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读