【问题标题】:Memory layout of a std::vector<__m128i> [duplicate]std::vector<__m128i> 的内存布局 [重复]
【发布时间】:2017-03-21 03:25:53
【问题描述】:

对于 128 位整数类型的向量 (std::vector&lt;__m128i&gt; vec;),那些 128 位整数是否总是放在连续的内存中?

【问题讨论】:

    标签: c++ vector


    【解决方案1】:

    是的,这就是vector 保证。所有元素都将占用一个连续的内存块,由向量对象管理。

    【讨论】:

    • 参见en.cppreference.com/w/cpp/container/vector - “元素是连续存储的,这意味着不仅可以通过迭代器访问元素,还可以使用指向元素的常规指针的偏移量。”
    • __m128i 实际上是某种结构吗?我在调试代码时看到了__m128i {aka __vector(2) long long int}。在这种情况下,这个东西在内存中是否仍然是连续的?
    • @dotdotdot:向量元素在内存中是连续的。时期。您尝试访问的逻辑数据是否连续存储取决于这些元素是什么。所以vector&lt;vector&lt;int&gt;&gt; 没有连续的ints,因为向量间接存储它们的数据(但连续!)。
    • 我希望__m128i没有填充...
    猜你喜欢
    • 1970-01-01
    • 2019-03-03
    • 1970-01-01
    • 2016-02-07
    • 2020-10-11
    • 2014-11-19
    • 2015-04-08
    • 2018-10-23
    • 2011-01-19
    相关资源
    最近更新 更多