c++ - 如何在函数内返回值后删除指针

标签 c++ pointers memory-management

我有这个功能:

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/

相关文章:

c++ - 如何在C++中搜索字符串数组

c++ - 基类中的 switch 语句需要使用派生类的值

c++ - 如何找到最常用的内存区域?

c++ - 下面这段代码会把内存分配到哪里?

c++ - boost::asio 套接字 async_read_some 操作导致内存泄漏

c++ - 安全的 enable_shared_from_this 用法

C++ 指针的内存地址和指针数组的内存地址如何相同?

C++ Typedef to const value 指针的常量地址

c - 两个函数 - 获取 char 和处理指针

c - 在 RAM 中保存树/哈希表