没有任何多余的理论.如果我写:
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)
int* t = new int[10]; // Heap
int t[10]; // Stack
Run Code Online (Sandbox Code Playgroud)
请注意,正如注释中所指出的,第一个示例在堆上分配内存,但t仍需要堆栈变量来将指针存储到分配的内存中.这意味着t当它超出范围时将被销毁,但它指向的内存(int数组)将保留在内存中,除非您delete在失去访问权限之前使用t.
在第二个示例中,数组本身存储在堆栈中,当t超出范围时将被销毁(请勿delete在此处使用).
| 归档时间: |
|
| 查看次数: |
95 次 |
| 最近记录: |