Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/143.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 带QVector但不带std::vector的错误分配_C++_Qt4.8 - Fatal编程技术网

C++ 带QVector但不带std::vector的错误分配

C++ 带QVector但不带std::vector的错误分配,c++,qt4.8,C++,Qt4.8,我想这不是一个问题,而是一个征求意见的请求 今天,我试图将一个更大的数据集加载到我的软件中,但遇到了几个错误的alloc 因此,所讨论的代码如下所示 QVector<float>verts; try { verts.reserve( numPoints * 6 ); } catch ( std::bad_alloc& ) { qDebug() << "error"; } QVectorverts; 尝试 { 垂直储备(单位*6); } 捕获(标准

我想这不是一个问题,而是一个征求意见的请求

今天,我试图将一个更大的数据集加载到我的软件中,但遇到了几个错误的alloc

因此,所讨论的代码如下所示

QVector<float>verts;
try
{
    verts.reserve( numPoints * 6 );
}
catch ( std::bad_alloc& )
{
    qDebug() << "error";
}
QVectorverts;
尝试
{
垂直储备(单位*6);
}
捕获(标准::错误分配&)
{

qDebug()不看
QVector
的定义,我猜这是因为Qt使用
int
来表示大小

向量的大小足够大,int将溢出,因此分配失败


std::vector
做了正确(且理智)的事情,并使用
size\u t
表示大小,因此它不会溢出。

如果不看
QVector
的定义,我想这是因为Qt使用
int
表示大小

向量的大小足够大,int将溢出,因此分配失败


std::vector
做了正确(且理智)的事情,并使用
size\u t
来表示大小,因此它不会溢出。

Doh自己可能已经看到了。log(6*92911773)/log(2)=29.05…,因此,仅仅项目计数应该适合32位整数,QVector内部也有32位限制:-/不是32位,而是整数限制,我猜,所以我得出结论,虽然元素的数量适合整数,但它可能也使用整数进行内存分配,这将是一个负数,因此不好alloc.Doh自己也能看到。log(6*92911773)/log(2)=29.05…,因此,仅仅项目计数应该适合32位整数,QVector内部也有32位限制:-/不是32位,而是整数限制,我猜,所以我得出结论,虽然元素的数量适合整数,但它可能也使用整数进行内存分配,这将是一个负数,因此不好阿洛克。