gpt4 book ai didi

c++ - malloc、struct、std::string 和 free 可能发生内存泄漏

转载 作者:太空狗 更新时间:2023-10-29 23:28:47 28 4
gpt4 key购买 nike

我遇到了类似下面的情况,我不确定结构的 std::string 元素是否泄漏内存,或者这是否正常。 free(v) 调用时,这两个 std::strings 分配的内存是否被删除?

struct MyData
{
std::string s1;
std::string s2;
};

void* v = malloc(sizeof(MyData));

...

MyData* d = static_cast<MyData*>(v);
d->s1 = "asdf";
d->s2 = "1234";

...

free(v);

漏不漏?

我使用 void-pointer 是因为我有另一个高级结构,它由一个枚举和一个 void-pointer 组成。根据枚举变量的值,void* 将指向不同的数据结构。

例子:

enum-field 有 EnumValue01 => void-pointer 将指向一个 malloc 的 MyData01 结构

enum-field 有 EnumValue02 => void-pointer 将指向一个 malloc 的 MyData02 结构

当然,非常感谢对不同方法的建议。

最佳答案

你不应该在 C++ 程序中使用 malloc()free();他们不知道构造函数/析构函数。

使用 newdelete 运算符。

关于c++ - malloc、struct、std::string 和 free 可能发生内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7609981/

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