C++中的堆(Heap)和栈(Stack)2:Overflow

上一节《C++中的堆(Heap)和栈(Stack)1:Memory Layout》

堆(Heap)和栈(Stack)在使用过程中会出现溢出(overflow)的情况:

Stack overflow:栈溢出是指当栈空间已被用完,继续向栈空间写数据(Push Data),引发错误。

Heap overflow:堆溢出是指当堆空间已被用完,继续向堆空间申请空间(new()/malloc()),引发错误。

在Windows中,默认的栈大小(Stack size)是1MB,如下程序

#include

int main() {

int stack[1000000];

std::cout << "hi";

return 0;

}

运行时会发生stack overflow错误,如下图所示:

C++中的堆(Heap)和栈(Stack)2:Overflow_第1张图片
chkstk.asm

在Windows 系统中,默认的堆大小(Heap size)是2GB,如下所示:

C++中的堆(Heap)和栈(Stack)2:Overflow_第2张图片

你可能感兴趣的:(C++中的堆(Heap)和栈(Stack)2:Overflow)