Cpp中的内存问题

Mih*_*hon 1 c++ memory

我有几个问题:

1)当我静态分配1 000 000 int的数组时,我得到了堆栈溢出错误:

int temp1[48][48];
int im2 [1000000];
int step = 8;
int lcol, lrow;
....
Run Code Online (Sandbox Code Playgroud)

虽然,1000000*sizeof(int)=4 000 000<4 Mb.我有大约8 GB的RAM.

2)当我使用动态分配(new和Malloc函数)并忘记删除我的内存时会发生什么?我未来的编辑是否会受到过去汇编中内存泄漏的影响?

3)如果是,我该如何解决?我应该关闭并打开visual studio,还是我必须重启我的电脑?

4)如果我正确地使用动态分配和相应的删除操作,但我在调试模式下工作(逐步编译)并且我编译了"new"命令并且没有编译"删除"命令,是否会出现内存泄漏?

Dav*_*rtz 5

平台对堆栈大小有限制并不罕见.

在您可能使用的每个现代平台上,进程的地址空间一旦终止就不再存在.因此,在进程终止时,无需对已分配的地址空间(已备份或未备份)的泄漏进行任何操作.地址空间不再存在,因为它属于进程.

如果分配而不删除,则该地址空间将被浪费,直到程序终止.在很大程度上,这可能会产生性能问题和资源消耗问题.