我有这样的功能
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
执行此操作。
但是当我在 main 中执行 var = new some_type
时,我手动克隆(将 var2
的每个数据复制到 var
)在 some_func
,我没有得到错误。
我的问题在哪里?我不太习惯指针和内存分配的事情,但我认为这两种方式都应该有效。我错了吗?
也许主要问题是,当我在函数中使用 new
分配一个指针,然后将其地址保存在指针的参数中时,函数完成时内存是否被释放?
最佳答案
您需要将您的定义更改为:
void some_func(some_type*& var)
{
// var will also be changed on the caller side
var = var2;
}
请注意,它将引用传递给指针,因此指针的值可以由被调用者更新。
关于c++ - 关于c++中的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18028264/