【问题标题】:How to access to memory block which allocated by std::vector?如何访问由 std::vector 分配的内存块?
【发布时间】:2011-03-26 11:39:08
【问题描述】:

许多人推荐可变长度数组的向量类。我必须将指向内存块的指针传递给 GL。如何访问指向std::vector 分配的内存块的指针?

【问题讨论】:

    标签: c++ opengl vector memory-management


    【解决方案1】:

    使用第一个元素的地址。如果你的向量是v,那么&v[0] 就可以了。

    【讨论】:

    • 这不是一件坏事吗?请比我更了解事物的人澄清这一点吗?
    • @batbrat:不,这不是一件坏事,我认为没有任何 OpenGL 调用会尝试重新分配块,只需读取和写入内容。您还必须将正确的长度传递给 GL。
    • @Steve Jessop:感谢您的澄清。我很高兴知道我可以安全地使用它。
    • 在调试模式下小心使用 VS,如果你的数组当前是空的,如果你这样做,调试器会报错&v[0]
    • 不只是VS,只有在实际存在is av v[0] 对象时才允许使用&v[0]!
    【解决方案2】:
    ContainerType* pData  = &vec.front();
    

    【讨论】:

      【解决方案3】:
      std::vector<int> v(1000);
      
      int *p = &v[0];
      
      //treat p as if it points to an array of 1000 ints
      //all 1000 ints default-initialized with 0!
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-10-08
        • 2015-09-24
        相关资源
        最近更新 更多