c++ - 以下代码是否可能存在内存泄漏?

标签 c++ memory-leaks initialization memset unsigned-char

    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/

相关文章:

c++ - Arduino 库 : multiple definitions of a function

c# - 我必须在 C# 中处理参数吗?

c - 为什么 Valgrind 提示的是 printf 而不是我未初始化的计数器?

c++ - 类对象未使用 fstream 从文本文件中读取

c++ - 禁止MAC地址访问某个端口 - C++

C++ 在模板类的情况下重载 operator+

memory-leaks - Golang WaitGroup导致内存泄漏,我该怎么做才能改进这个功能

delphi - 如何在 DUnit 中使用 FastMM 启用内存泄漏跟踪?

JavaScript : ReInitialize Global Variable without refreshing the page

java - 如何在 WebApp 中的处理程序上调用 init()