এমন বাস্তবায়নকে ধরে নিলে যার মধ্যে একটি স্ট্যাক এবং একটি হিপ রয়েছে (স্ট্যান্ডার্ড সি ++ এ ধরণের জিনিস রাখার প্রয়োজন নেই) একমাত্র সত্য বিবৃতিটি সর্বশেষ।
vector<Type> vect;
//allocates vect on stack and each of the Type (using std::allocator) also will be on the stack
এটি সত্য, শেষ অংশ ব্যতীত ( Type
স্ট্যাকের মধ্যে থাকবে না)। কল্পনা করুন:
void foo(vector<Type>& vec) {
// Can't be on stack - how would the stack "expand"
// to make the extra space required between main and foo?
vec.push_back(Type());
}
int main() {
vector<Type> bar;
foo(bar);
}
অনুরূপভাবে:
vector<Type> *vect = new vector<Type>; //allocates vect on heap and each of the Type will be allocated on stack
একই অংশের উদাহরণ সহ শেষ অংশ ব্যতীত সত্য:
void foo(vector<Type> *vec) {
// Can't be on stack - how would the stack "expand"
// to make the extra space required between main and foo?
vec->push_back(Type());
}
int main() {
vector<Type> *bar = new vector<Type>;
foo(bar);
}
এর জন্য:
vector<Type*> vect; //vect will be on stack and Type* will be on heap.
এটি সত্য, তবে এখানে লক্ষ্য করুন যে Type*
পয়েন্টারগুলি গাদা হয়ে থাকবে, তবে যে Type
দৃষ্টান্তগুলি তারা নির্দেশ করেছে তা হ'ল :
int main() {
vector<Type*> bar;
Type foo;
bar.push_back(&foo);
}