尝试传递结构时 C++ 代码崩溃

标签 c++ pointers struct gtk

<分区>

我有这个结构:

struct dat {
    std::string name;
};

当运行下面的代码时,我的程序崩溃了:

dat* x = (struct dat*)malloc(sizeof(struct dat));
x->name = str;
g_signal_connect (button, "clicked", G_CALLBACK (func), &x);

最佳答案

不要在 C++ 中使用 malloc

如果您需要一个变量具有动态存储持续时间,请改用newdelete。简而言之,malloc 调用任何构造函数,而new 会。 std::string 构造函数未被调用的事实可能是导致崩溃的原因。

但在许多情况下,自动存储持续时间就足够了,您可以简单地写:

dat foo;

并将该实例通过引用传递给您的函数。

关于尝试传递结构时 C++ 代码崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42765156/

相关文章:

c++ - Qt Creator 中的 Glew 链接问题?

c - 指针指向 Void 的内存分配

c++ - 如何将自定义结构传递到 C++(非 CLI)中的 _variant_t?

python - Python 中的静态对象列表

c - 向结构数组添加元素

C++:struct 和 new 关键字

c++ - 复制一个指针,改变拷贝指向的内容而不改变原始指针?

c++ - 错误 : no matching function for call to

c++ - 如何在C++中执行缓存操作?

c - C 中的指针和重新分配