คำถามติดแท็ก 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 ++) นำไปสู่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.