c++ - 关于c++中的指针

标签 c++ pointers

我有这样的功能

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/

相关文章:

c++ - 多线程类中互斥体可能出现段错误

c++ - 使用 decltype 返回迭代器

C 释放一个由其他指针指向的实例

c++ - 如果不为空,则为指针赋值

c - 为什么在使用指针初始化用户自定义结构时需要强制类型转换?

c++ - 如何使用 C++ 在 WinUI 3 中获取页面上的主窗口句柄

c++ - 带括号的预期的不合格ID错误

c++ - 将 char 变量传递给类型字符串函数

c++ - 具有未初始化指针的类是否具有未定义的行为?

C : double pointer passed as parameters comes back empty