正文
1. 一个错误释放内存的例子
下面的场景会有什么错?
1 std::string *stringArray = new std::string[100];2 3 ...4 5 delete stringArray
一切看上去都是有序的。new匹配了一个delete。但有一些地方确实是错了。程序的行为是未定义的。至少来说,stringArray指向的100个string对象中的99个看上去都不能被正确释放,因为他们的析构函数可能永远不会被调用。
2. 使用new 和delete时究竟做了啥?
当你使用一个new表达式(通过使用new动态的创建一个对象)时,会发生两件事情。第一,内存被分配(通过一个叫做operator new的函数,看Item 49和Item 51)。第二,在分配的内存上调用了一个或多个构造函数。当你使用一个delete
延伸阅读
学习是年轻人改变自己的最好方式