1. ホーム
  2. c++

[解決済み] ベクターが割り当てられるとき、ヒープとスタックのどちらでメモリを使用するのですか?

2022-04-14 15:02:50

質問

次の文はすべて正しいか?

vector<Type> vect; //allocates vect on stack and each of the Type (using std::allocator) also will be on the stack

vector<Type> *vect = new vector<Type>; //allocates vect on heap and each of the Type will be allocated on stack

vector<Type*> vect; //vect will be on stack and Type* will be on heap. 

の内部メモリはどのように確保されているのでしょうか? Type の中で vector または他のSTLコンテナ?

解決方法は?

vector<Type> vect;

vector ヘッダ情報はスタックに、要素は空き領域("heap")に格納されます。

vector<Type> *vect = new vector<Type>;

は、フリーストアにあるすべてのものを割り当てます。

vector<Type*> vect;

vector をスタックに、ポインタの束をフリーストアに置きますが、これらのポインタをどこに置くかは、使い方次第です(例えば、要素0をフリーストアに、要素1をスタックに置くことができます)。