西西河

主题:【原创】猛批烂书 程序员面试宝典 上 -- 晨池

共:💬64 🌺96
全看分页树展 · 主题 跟帖
家园 不是这样的

vector管理的对象(CDemo)的内存无论用1还是2的写法都是在堆上分配的,但a1本身在这两个写法中是有区别的。这个例子的错误之处就在a1本身的这个区别上。在绝大多数情况下,a1本身必须要放到栈上,目的是自动管理堆上内存的分配和释放,实现类似garbage collection的功能。这个例子恰恰需要这样的功能。在c++里面叫做smart pointer。不过我非常不喜欢smart pointer,因为这个玩意在绝大多数情况下,被用成了给脱裤子放屁的写法加一层保护......而且,需要在堆分配内存的情况,一般都是使用大块的内存,也就是要当成数组使用,而不是当成指针使用。但这个smart pointer却没有任何帮助数组使用书写方便的功能。

栈的大小,缺省情况下32位系统预留1MB。16位系统应当是8~16KB吧

全看分页树展 · 主题 跟帖


有趣有益,互惠互利;开阔视野,博采众长。
虚拟的网络,真实的人。天南地北客,相逢皆朋友

Copyright © cchere 西西河