【发布时间】:2014-12-24 03:18:46
【问题描述】:
我目前正在使用 C/C++。但是使用 malloc/new 而不是仅仅在堆栈上声明一些 var 的主要原因是什么。喜欢:int a;
或者另一个例子:
int *a; // 然后用它来跟踪一个数组
int a = (int)malloc(sizeof(int));
【问题讨论】:
-
也许你希望一个值在函数返回后仍然存在,或者你想分配一个对于堆栈来说太大的巨大内存块。
-
C 和 C++ 是不同的语言。
-
没有“主要原因”。有利有弊,无论您处于何种情况,它们都会发生变化。了解每种情况的作用,然后决定在这种情况下您是更愿意使用 malloc/new 还是堆栈。
-
两个主要原因。 1. 分配超出分配函数范围的内存。 2. 分配大量内存,否则如果自动分配会有堆栈溢出的风险。
-
我不敢相信这不是骗子,但我找不到...编辑:也许这个:stackoverflow.com/questions/14013620/using-malloc-over-array