gpt4 book ai didi

c++ - `new/malloc` 应该是 `delete/free` 的那个?

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:23:02 24 4
gpt4 key购买 nike

这似乎是C/C++中的常识,new/malloc一些内存的函数应该在函数完成之前delete/free它们,对吧?

但假设我有这样的问题,有一个函数 reader 会从文件中读取 block 到缓冲区,还有另一个函数 consumer 会消费这些缓冲后者,

void reader(ifstream &ifs)
{
char *buf = new char[100];
ifs.read(buf, 100);
save_buffer(buf); //save this buf into a global array, say buf_array[10]
}

void consumer()
{
for(int i = 0; i < 10; i++)
consume( buf_array[i] ); //do something with those buffers read by reader
}

我的问题是,很多内存资源是在readernew的,但是reader不能delete它们,因为这些缓冲区还没有被 consumer 使用。 消费者是否应该负责删除那些缓冲区?

最佳答案

没有人说分配内存的函数应该释放内存。但通常应该由同一个组件来处理它。因为你的readerconsumer 是一对,所以他们一起协调内存就可以了。

关于c++ - `new/malloc` 应该是 `delete/free` 的那个?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11661498/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com