老师,第12行,有的书上会用malloc或者new申请空间,但是老师您的代码,直接声明了一个T类型的数组,请问,开辟数组和申请栈空间的区别是什么,为什么都可以

来源:3-2 归并排序法的实现

慕粉1517159895

2017-06-22

写回答

2回答

liuyubobobo

2017-06-23

和类型无关。使用new或者malloc申请的内存是在系统的堆空间上。使用[](方括号)声明的数组是在系统的栈空间上。从功能上他们是没有区别的。但是在C++的具体使用上,要注意,使用new申请的空间需要delete(相应的malloc申请的空间需要free);而栈空间的内存在block执行完后会被自动释放。


这就好比如下两个数组的声明方式,都是数组:)

int a[10];
int* a = new int[10];


1
0

慕粉1517159895

提问者

2017-06-22

//szimg.mukewang.com/594bceda0001b5c009130521.jpg我刚才忘记截图了,这张图片里的12行

1
0

算法与数据结构(C++版) 面试/评级的算法复习技能包

课程专为:短时间内应对面试、升职测评等艰巨任务打造

11187 学习 · 1614 问题

查看课程