我有一个问题 据我所知,如果我会收到很多元素,并将它们放入堆栈中,进程可能会崩溃,堆应该更安全更大,所以,当我分配 vector v 和 insert 元素,它们将存储在堆中,就像其他主题中回答的那样,对吧? 所以我的程序不会因长输入而崩溃,对吧?
还有,vector在堆中是什么意思,vector对象不就是一个指向包含元素的首地址的指针吗,除了一些其他的函数
最佳答案
std::vector 的对象是在堆栈(或静态内存)中创建的,如果您不打算使用 operator new 在堆中创建它们的话。但是 vector 包含的项目是在堆中创建的。例如,当您在某些函数中按以下方式定义 vector 时
std::vector<int> v( 100 );
然后变量v被放入栈中。然而,v 对象本身分配了一个足够大的堆范围以容纳 100 个 int 类型的元素。
您可以使用 operator sizeof that 来确定有多少内存占用了 std::vector 类型的对象本身。试试这段代码
std::vector<int> v( 100 );
std::cout << sizeof( v ) << std::endl;
正如您将看到的,类型为 std::vector 的对象的大小并不取决于该对象可以操作的项数。
关于c++ - 堆栈/堆中的 vector 元素?长输入,C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19840027/