此代码块是否会导致内存泄漏?
char * foo = new char [20];
read(STDIN_FILENO, foo, 20);
string bar;
bar.reserve(20);
bar = foo;
delete[] foo;
Run Code Online (Sandbox Code Playgroud)
我认为它不能,因为我们delete[]用来释放大块的内存.但是,对象bar可能会有所不同.请分享你的观点.
如果有任何的string bar;,bar.reserve(20)或bar = foo抛出,你有一个memleak.
您可以使用一些智能指针来避免这种情况:
auto foo = std::make_unique<char[]>(20);
Run Code Online (Sandbox Code Playgroud)