首页 > 解决方案 > 下面的代码是否可能存在内存泄漏?

问题描述

    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);

我正在查看上面的代码,我直觉它可能会导致内存泄漏,但我在逻辑上找不到原因。

我在想这是因为我们有一个指向 0 的 memset 指针,数据的地址可能会丢失。我们想要做的只是在从接口获取数据之前初始化 bin_data 和 bin_model 将用于进一步处理,因为获取数据有可能失败。

上面的代码会不会引起任何问题?

谢谢!

标签: c++memory-leaksinitializationmemsetunsigned-char

解决方案


memset(bin_data, 0, 200);

...从 . 指向的地址开始写入 200 个零bin_datamemset不会将指针本身覆盖为零。地址保持不变。

如果此代码中存在内存泄漏,那将是由于缺少delete[].


推荐阅读