使用malloc(),本地变量的内存大小值多少钱?

时间:2018-05-21 14:18:20

标签: c operating-system

如果我有一个struct作为局部变量,它只在一个函数里面使用但是它的大小有点大但比堆栈帧的最大值小,我想直接定义它以避免花钱  调用malloc()但我也害怕变量大小的总和超过堆栈帧大小的限制。使用malloc是否有局部变量大小的标准?

3 个答案:

答案 0 :(得分:1)

这当然取决于操作系统,但一个主观的经验法则是,在堆上(或在browser.js:49 Warning: Material-UI: the value provided `undefined` is invalid )中,大约1 kib的对象在堆栈上比在堆栈上更好。

虽然有些库他们希望很多对象中的一个可能很大,但为了保持一致性,将所有内容放在堆上。

答案 1 :(得分:0)

如果你需要在堆栈上分配一小部分但未知的编译时内存,请使用alloca()

答案 2 :(得分:0)

以下是您可以做的一些事情:

  • 检查编译器文档以获取更改堆栈大小的选项。这与编译器不同。如果您使用的是linux,那么您可能需要更改告诉堆栈大小的环境变量。
  • 制作一个静态变量。这将把它放在程序存储器的数据段中。这也将使变量的任何更改保持从函数的一次调用到另一次调用,因为静态变量的生命周期是整个程序运行并且只初始化一次。