尝试传递结构时 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
。
如果您需要变量具有动态存储持续时间,请改用 new
和 delete
。简而言之,malloc
不会 调用任何构造函数,而 new
会。 std::string
构造函数未被调用的事实可能是导致崩溃的原因。
虽然在很多情况下,自动存储持续时间就足够了,您可以简单地写:
dat foo;
并将该实例通过引用传递给您的函数。
我有这个结构:
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
。
如果您需要变量具有动态存储持续时间,请改用 new
和 delete
。简而言之,malloc
不会 调用任何构造函数,而 new
会。 std::string
构造函数未被调用的事实可能是导致崩溃的原因。
虽然在很多情况下,自动存储持续时间就足够了,您可以简单地写:
dat foo;
并将该实例通过引用传递给您的函数。