【发布时间】:2014-12-03 12:04:33
【问题描述】:
这样的事情会引发错误:
using namespace std;
int main()
{
int test[1000000] = {};
}
这样的事情不会:
using namespace std;
int test[1000000] = {};
int main()
{
}
这是为什么呢? 100 万个整数甚至不会占用太多内存。
【问题讨论】:
这样的事情会引发错误:
using namespace std;
int main()
{
int test[1000000] = {};
}
这样的事情不会:
using namespace std;
int test[1000000] = {};
int main()
{
}
这是为什么呢? 100 万个整数甚至不会占用太多内存。
【问题讨论】:
第一个在堆栈上分配空间。第二个在编译/链接时在数据段中分配空间。堆栈大小有限。
【讨论】:
堆栈不是动态的,但你也可以这样做
int* arr = new int[1000000];
但不要忘记删除它,因为这会在堆中声明数组,这是动态内存,通过从堆中删除它可以防止内存泄漏。
例子:
delete arr;
这只是替代如何使用内存
【讨论】: