主题:【原创】猛批烂书 程序员面试宝典 上 -- 晨池
共:💬64 🌺96
复 呵呵。
vector管理的对象(CDemo)的内存无论用1还是2的写法都是在堆上分配的,但a1本身在这两个写法中是有区别的。这个例子的错误之处就在a1本身的这个区别上。在绝大多数情况下,a1本身必须要放到栈上,目的是自动管理堆上内存的分配和释放,实现类似garbage collection的功能。这个例子恰恰需要这样的功能。在c++里面叫做smart pointer。不过我非常不喜欢smart pointer,因为这个玩意在绝大多数情况下,被用成了给脱裤子放屁的写法加一层保护......而且,需要在堆分配内存的情况,一般都是使用大块的内存,也就是要当成数组使用,而不是当成指针使用。但这个smart pointer却没有任何帮助数组使用书写方便的功能。
栈的大小,缺省情况下32位系统预留1MB。16位系统应当是8~16KB吧
- 相关回复 上下关系8
压缩 3 层
🙂大致知道了 1 靠山王 字740 2010-11-10 10:26:57
🙂嗯……我也觉得,嘿嘿,不过细节我忘记了 1 晨池 字98 2010-11-11 03:55:59
🙂呵呵。 1 股市就是搏傻游 字865 2010-11-07 23:23:13
🙂不是这样的
🙂smart pointer还是很有用的 假设 字140 2010-11-24 02:34:39
🙂错误是没有的,没有所谓a1必须要放到栈上的说法。 股市就是搏傻游 字430 2010-11-08 19:31:31
🙂用哪一个应该是看需求 四道口 字94 2010-11-08 12:30:42
🙂是看需求。 股市就是搏傻游 字76 2010-11-08 19:36:12