从 vector<float> 切换到 vector<short> 时出错

Posted

技术标签:

【中文标题】从 vector<float> 切换到 vector<short> 时出错【英文标题】:Error switching from vector<float> to vector<short> 【发布时间】:2011-04-21 20:58:09 【问题描述】:

我正在制作一个应用程序,我想将我正在创建的向量从浮点型更改为短型。我的代码在这样的头文件中:

vector<float> vertices;

它工作正常,但如果我切换到这个:

vector<short> vertices;

并编译,它崩溃并出现以下错误:

malloc: *** error for object 0x1035804: incorrect checksum for freed object
 - object was probably modified after being freed. *** set a breakpoint in
malloc_error_break to debug

我不知道发生了什么。如果有帮助,这是我正在为 iPad 开发的 OpenGL 应用程序。

【问题讨论】:

如果启用断点,能否让 Xcode 报告崩溃发生在哪一行,或者获取堆栈跟踪? 这是我一直想不通的一件事,如何让 XCode 在崩溃时将堆栈跟踪输出到日志中? @Davido - 为什么不自己查看相应的面板来查看堆栈跟踪,以及代码中发生这种情况的当前位置?在 Xcode 4 中,这发生在下方的调试区域中,您可以在屏幕右上角的工具栏选项中显示或隐藏该区域。 我上面发布的错误是调试控制台输出的唯一内容。我可以检查其他设置以使其显示更多信息吗?它永远不会为我输出完整的堆栈跟踪,我不知道我是否需要做一些特别的事情来启用它或什么。 如果有帮助,它会在 new_allocator.h(内置 c++ 文件之一,不是我的)中给出“SIGBART”的断点处停止:return static_cast<_tp>(: :operator new(__n * sizeof(_Tp))); 【参考方案1】:

我仍然不知道为什么当我将矢量从浮动更改为短时我的应用程序无法运行,但我通过创建一个新的短裤矢量对象并改用它解决了这个问题。没有更多问题并按预期工作。

【讨论】:

以上是关于从 vector<float> 切换到 vector<short> 时出错的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Eigen 从 vector<vector<float>> 创建矩阵? [复制]

将 Vector<float> 中的数据复制到 Vector<Mat> (Opencv/C++)

如何在 JniWrapper 中将 Java ArrayList<float[]> 映射到 C++ Vector<array<float,size>>?

从 2D 矢量切换到 1D 矢量

C++:从vector<vector<T>>获取T**

处理 vector<vector<float>> 的 size() 时,vector<vector<float>>::size_type 还是 vect