0

我想使用一个函数来分配和初始化两个相关的结构实例。但是我无法让内存在分配函数之外持续存在。另外,如果可能的话,我宁愿在没有内存泄漏的情况下这样做:

void alloc_init(foo_struct *bar, foo_struct *baz){
    //Create some values in here
    bar = new foo_struct(created_val1, created_val2);
    baz = new foo_struct(created_val3, created_val4);
}

如果我从内部检查created_val1in的值,那就完全没问题了……但是一旦从堆栈中弹出,我就会得到垃圾。我如何使这些价值观持续存在?baralloc_init()alloc_init

4

2 回答 2

3

您需要通过引用传递指针:

void alloc_init(foo_struct *& bar, foo_struct *& baz){
    //Create some values in here
    bar = new foo_struct(created_val1, created_val2);
    baz = new foo_struct(created_val3, created_val4);
}

因为您按值传递指针,所以您正在为函数内的原始指针的副本分配内存。

于 2012-04-15T07:26:22.017 回答
0

你可以制作它们static,这不是最好的解决方案。或者您可以在更高的范围内声明全局变量,例如在更持久的类或全局变量中。

于 2012-04-15T07:27:09.667 回答