哪一个:在C++中使用NEW创建对象时使用Stack或Heap

Yod*_*oda 2 c++ heap stack

没有任何多余的理论.如果我写:

int* t = new int[10]; //stack or heap is beign used?
Run Code Online (Sandbox Code Playgroud)

然后再次

int t[10];// stack or heap is beign used?
Run Code Online (Sandbox Code Playgroud)

JBe*_*ley 6

int* t = new int[10]; // Heap

int t[10]; // Stack
Run Code Online (Sandbox Code Playgroud)

请注意,正如注释中所指出的,第一个示例在堆上分配内存,但t仍需要堆栈变量来将指针存储到分配的内存中.这意味着t当它超出范围时将被销毁,但它指向的内存(int数组)将保留在内存中,除非您delete在失去访问权限之前使用t.

在第二个示例中,数组本身存储在堆栈中,当t超出范围时将被销毁(请勿delete在此处使用).