我有这样的功能
void some_func(some_type *var)
{
// do something a get a var2 of type some_type*
var = var2;
}
我主要有
some_type *var;
some_func(var);
print_var(var);
但是当我运行程序时出现分段错误。调试显示print_var
是问题所在,好像var
没有任何价值。var2
是使用初始化的new some_type
,所以我认为我不需要为var
.
但是当我var = new some_type
在 main 中进行操作并手动克隆(将每个数据复制var2
到var
)中时some_func
,我没有收到错误消息。
我的问题在哪里?我真的不习惯指针和内存分配的东西,但我认为这两种方式都应该有效。我错了吗?
也许主要问题是当我new
在函数中分配一个指针,然后将它的地址保存在指针的参数中,当函数完成时内存是否会被释放?