unsigned char *bin_data;
unsigned char *bin_model;
bin_data = new unsigned char[200];
memset(bin_data, 0, 200);
bin_model = new unsigned char[200];
memset(bin_model, 0, 200);
我正在查看上面的代码,我有一种直觉,它可能会导致内存泄漏,但我逻辑上找不到原因。
我在想这是因为我们将指针 memset 为 0,数据的地址可能会丢失。我们想要做的只是在从将用于进一步处理的接口(interface)获取数据之前初始化 bin_data 和 bin_model,因为获取数据有可能失败。
上面的代码会不会有什么问题?
谢谢!
最佳答案
memset(bin_data, 0, 200);
...从 bin_data
指向的地址开始写入 200 个零。 memset
不会将指针本身覆盖为零。地址保持不变。
如果此代码中存在内存泄漏,那将是由于缺少 delete[]
。
关于c++ - 以下代码是否可能存在内存泄漏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50901838/