我有这个功能:
char* ReadBlock(fstream& stream, int size)
{
char* memblock;
memblock = new char[size];
stream.read(memblock, size);
return(memblock);
}
每次我必须从文件中读取字节时都会调用该函数。我认为它每次使用它都会分配新的内存,但是一旦我处理了数组中的数据,我该如何释放内存呢?我可以从函数外部进行吗?通过分配大块处理数据比分配和删除小块数据具有更好的性能?
非常感谢您的帮助!
最佳答案
使用 delete[]
释放动态数组:
char* block = ReadBlock(...);
// ... do stuff
delete[] block;
但理想情况下,您不要在这里使用手动内存管理:
std::vector<char> ReadBlock(std::fstream& stream, int size) {
std::vector<char> memblock(size);
stream.read(&memblock[0], size);
return memblock;
}
关于c++ - 如何在函数内返回值后删除指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3145799/