0

関数を使用して、関連する2つの構造体インスタンスを割り当てて初期化したい。ただし、割り当て機能の外部でメモリを保持することはできません。また、可能であれば、メモリリークなしでこれを実行したいと思います。

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の値をbar内部からチェックすると、alloc_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 に答える