我有这个结构:
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);
答案 0 :(得分:1)
不要在C ++中使用new
。
如果您需要变量来获得动态存储时长,请改用delete
和malloc
。简而言之,new
将不调用任何构造函数,而std::string
将会。 dat foo;
构造函数未被调用的事实可能是导致崩溃的原因。
在许多情况下,自动存储持续时间就足够了,您只需编写:
Agent
并将该实例通过引用传递给您的函数。