C++ Primer 练习8.7中有下列语句:
char buf[1000];
...
int *pa=new(buf) int[20];
...
delete[] pa;
由于定位new表达式并不分配内存,所以delete[] pa是不妥的, 但buf不是通过new表达式分配, 也不能用 delete[] buf, 那么应该如何释放pa指向的那一块内存?
buf不能释放。pa指向的int[20]也不能释放,需要重用这块内存时只要再使用placemant new操作符,或者其他的方式。也就是说,这时pa指向的内存的有效性须要由程序员自己来保证。