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

C++ code crashing when trying to pass struct

我有这个结构:

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;

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