我有这个功能:
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/