当函数需要char*时,可以传入shared_ptr吗?
我正在阅读整个文本文件(长度 = 100),并希望将 char 存储到 char[] 数组中。我使用的天真方式是这样的:
ifstream dictFile(fileName);
size_t fileLength = 100;
char* readInBuffer(new char[fileLength]);
dictFile.read(readInBuffer, fileLength);
//processing readInBuffuer..............
delete[] readInBuffer;
dictFile.close();
当然,如果在 delete[] 语句之前抛出异常,则存在内存泄漏。我想知道是否可以使用 shared_ptr readInBuffer(new char[fileLength]); 但是函数原型
读取 ( char* s, 流大小 n )
不接受智能指针作为输入?有什么技巧吗?
编辑:我正在尝试写这样的东西:
shared_ptr<char[]> readInBuffer(new char[fileLength]);
dictFile.read(readInBuffer.get(), fileLength);
但它不会编译。