タグ付けされた質問 「automatic-storage」

3
std :: vector(ab)は自動ストレージを使用します
次のスニペットを考えてみましょう: #include <array> int main() { using huge_type = std::array<char, 20*1024*1024>; huge_type t; } 通常、デフォルトのスタックサイズは通常20MB未満であるため、ほとんどのプラットフォームでクラッシュします。 次のコードを考えてみましょう: #include <array> #include <vector> int main() { using huge_type = std::array<char, 20*1024*1024>; std::vector<huge_type> v(1); } 意外にもクラッシュします!トレースバック(最近のlibstdc ++バージョンの1つを使用)はinclude/bits/stl_uninitialized.hファイルにつながり、ここに次の行が表示されます。 typedef typename iterator_traits<_ForwardIterator>::value_type _ValueType; std::fill(__first, __last, _ValueType()); サイズ変更vectorコンストラクターは、要素をデフォルトで初期化する必要があります。これが実装方法です。明らかに、_ValueType()一時的にスタックがクラッシュします。 問題は、それが適合実装であるかどうかです。はいの場合、それは実際には巨大な型のベクトルの使用がかなり制限されていることを意味しますね?
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.