i***h 发帖数: 12655 | 1 比如 A() 调用 B() 调用 C(), 结果C()里new 错了,
A() 和 B() 里alloc的内存怎么办?
今天被问倒了... | m******n 发帖数: 155 | 2 如果是stack上的内存,不需要清理。
如果是heap上的,分配内存的时候就应该依照RAII的原则,或者用现成的smart
pointer。没这么做的话内存就漏了。
【在 i***h 的大作中提到】 : 比如 A() 调用 B() 调用 C(), 结果C()里new 错了, : A() 和 B() 里alloc的内存怎么办? : 今天被问倒了...
| O*******d 发帖数: 20343 | 3 C++ exception的处理需要仔细。 所有占用的资源都需要释放。 如果你要用new,最好
用std::auto_ptr, 一旦有exception,资源就被自动释放。 如果在多线程里需要锁定
一段执行,在Windows里可以用CSingleLock, 可以自动解锁。 其它占用资源的,例如
socket,file handle,可以写一个class,把释放资源的程序写在destructor里。 使
用时造一个instance,其余就是自动的了。 |
|