c++ - 下面的代码是否可能存在内存泄漏?
问题描述
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 将用于进一步处理,因为获取数据有可能失败。
上面的代码会不会引起任何问题?
谢谢!
解决方案
memset(bin_data, 0, 200);
...从 . 指向的地址开始写入 200 个零bin_data
。memset
不会将指针本身覆盖为零。地址保持不变。
如果此代码中存在内存泄漏,那将是由于缺少delete[]
.
推荐阅读
- animation - SwiftUI tvOS 按钮动画 - 如何停止 y 轴移动
- google-apps-script - 在谷歌表中运行脚本后,有没有办法自动下一个(到下一个项目)单元格数据验证下拉列表?
- vba - Q. 如何使用 VBA 转置每 n 行
- sql - 如何使用 BigQuery 获取当前 ID 的最大日期以及其他 ID?
- ethereum - 布朗尼已安装但无法识别
- python - 消除滋扰实例启动
- linux - 如何清除 dlopen() 的共享库?exec() 会删除它们吗?
- ruby - Ruby NoMethodError 异常默认调用#inspect
- pivot-chart - 如何在 Excel 数据透视图中显示特定月份的日期
- typescript - Typescript 在通用存储库类中使用 Pick for getbyid