【问题标题】:one time used function - should I use malloc or not一次使用的功能 - 我应该使用 malloc 还是不使用
【发布时间】:2013-06-25 01:00:31
【问题描述】:

我的 C 代码有点长,并且有一个函数只能调用一次。这包括一些变量,如char arrayint。代码是这样的:

void onetimefcn(){
    char example_array1[20]="hello...";
    //...
    char example_array10[14]="hej...";
    int x=3,y=432,z=321,d=4439;
    //some arithmatic operation
    //some char array operation: strcpy, strcmp
    // some for loops and if else conditions
}

我将在嵌入式 linux 设备上运行该代码。我想知道我是否应该将malloc 用于该函数上的所有变量然后free 他们?是否有助于有效利用资源,还是会引发一些严重的问题(如果是,会发生什么情况)?

【问题讨论】:

  • 它们会引起问题吗?也许正在进行某种过早的优化?
  • 可用设备内存大小是多少?几 kB 或更少?
  • 设备有 250MHz CPU 和 64MB DDR-RAM
  • 但是他们的范围没有超出那个功能,对吗?当函数结束时,它们会被删除吗?
  • 该函数会自行删除。但是,我还有一些变量将在 main() 上使用一次。将 malloc 用于将在 main() 中使用一次的变量是否有意义?

标签: c linux memory-management malloc


【解决方案1】:

使用malloc 会比隐式堆栈分配效率。堆栈是一种非常有效的分配机制,因为分配和释放都归结为堆栈指针的简单更新,不会留下任何碎片。

【讨论】:

    猜你喜欢
    • 2020-03-20
    • 2010-11-16
    • 2020-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-05
    相关资源
    最近更新 更多