動的メモリ割り当てのない配列を返す方法が見つかりません。配列のサイズを知っているので、私はこの問題を解決するために構造体を使用していないダイナミックメモリ割り当てのないC++の戻り配列?
Device* getConnectedDevices() {
// scan for devices.
Device *connectedDevices = new Device[deviceCount]; // Dynamically allocate memory for the Devices
// Get for each device an ID
return connectedDevices;
}
void doSomething() {
// some code
// I need a list with all the connected devices!!
Device *connectedDevices;
connectedDevices = getConnectedDevices();
// do something with the array
}
のdoSomething():動的なメモリ割り当てで
:私は、例を用いて詳細にそれを説明する
struct deviceArray { Device* devices; int deviceCount; };
: 私はこれを行うにはどのようには考えています。私は次のことを試しました:
- 参考までに渡します。問題:スキャンする前に配列のサイズがわからない。
- ダイナミックメモリ割り当てなしで戻る(ローカル変数)。問題:オブジェクトはもはや存在しません(もちろん)。
手動では何も割り当てないでください。単に 'std :: vector'または同様のクラスを使用してください。 –
ローカルポインタを返すことは、関数の終了時に、そのアドレスが有効でないため、常に災害です。したがって、動的割り当てが必要です – dlmeetei
'std :: vector'は動的メモリ割り当てを使用します。違いは、関数が動的に割り当てられたメモリを明示的に管理する必要がないことです。ベクトルは独自のメモリを管理します。 – Peter