Eme*_*mer 30 c++ pointers memory-management
我有这个功能:
char* ReadBlock(fstream& stream, int size)
{
char* memblock;
memblock = new char[size];
stream.read(memblock, size);
return(memblock);
}
Run Code Online (Sandbox Code Playgroud)
每次我必须从文件中读取字节时,都会调用该函数.我认为每次使用它都会分配新的内存,但是一旦我处理了数组内的数据,我怎么能释放内存呢?我可以从功能外部做到吗?通过分配大块处理数据比分配和删除小块数据提供更好的性能?
非常感谢您的帮助!
Geo*_*che 15
使用delete[]以下命令释放动态数组:
char* block = ReadBlock(...);
// ... do stuff
delete[] block;
Run Code Online (Sandbox Code Playgroud)
理想情况下,您不在此处使用手动内存管理:
std::vector<char> ReadBlock(std::fstream& stream, int size) {
std::vector<char> memblock(size);
stream.read(&memblock[0], size);
return memblock;
}
Run Code Online (Sandbox Code Playgroud)