尝试传递struct时C ++代码崩溃

时间:2017-03-13 13:43:42

标签: 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);

1 个答案:

答案 0 :(得分:1)

不要在C ++中使用new

如果您需要变量来获得动态存储时长,请改用deletemalloc。简而言之,new调用任何构造函数,而std::string将会。 dat foo;构造函数未被调用的事实可能是导致崩溃的原因。

在许多情况下,自动存储持续时间就足够了,您只需编写:

Agent

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