C++ C++;如何在没有分割错误的情况下将百万对象存储到阵列中
如何将一百万个对象存储到阵列中而不出错? 我在C++中玩3D引擎,所有的工作都很好,速度快,但是我不能添加超过50K的对象。对象包含3个矢量和颜色以及一些有用的方法。要帮忙吗 但使用C++ C++;如何在没有分割错误的情况下将百万对象存储到阵列中,c++,arrays,segmentation-fault,C++,Arrays,Segmentation Fault,如何将一百万个对象存储到阵列中而不出错? 我在C++中玩3D引擎,所有的工作都很好,速度快,但是我不能添加超过50K的对象。对象包含3个矢量和颜色以及一些有用的方法。要帮忙吗 但使用int N=1151000 输出为: Segmentation fault (core dumped) 如何将一百万个对象存储到阵列中而不出错?谢谢。您可以在堆上分配内存(动态分配)。当前您正在获得堆栈溢出 另一种方法是: ulimit-s unlimited在任何Linux系统上都可以增加堆栈大小,但我建
int N=1151000代码>
输出为:
Segmentation fault (core dumped)
如何将一百万个对象存储到阵列中而不出错?谢谢。您可以在堆上分配内存(动态分配)。当前您正在获得堆栈溢出
另一种方法是:
ulimit-s unlimited
在任何Linux系统上都可以增加堆栈大小,但我建议您使用第一个选项。您可以使用如下方法:
#include <vector>
class Myc{
public:
double x,y,z;
Myc(double _x=0 ,double _y=0,double _z=0){
x=_x;y=_y;z=_z;
}
};
int main(){
int i;
int N=151000;
std::vector<Myc> pts(N); // stores its data in the free store (heap)
for (i=0;i<N;i++){
pts[i] = Myc(1,1,1);
}
cout << pts[999].x <<endl;
return 0;
}
#包括
Myc类{
公众:
双x,y,z;
Myc(双x=0,双y=0,双z=0){
x=x;y=y;z=z;
}
};
int main(){
int i;
int N=151000;
std::vector pts(N);//将其数据存储在空闲存储(堆)中
对于(i=0;i使用std::vector
并插入调用pts.emplace\u back
方法
int main(){
int i;
int N = 9999999;
std::vector<Myc> pts;
for (i = 0; i < N; i++)
{
pts.emplace_back(Myc(1, 1, 1));
}
cout << pts[999].x <<endl;
return 0;
}
intmain(){
int i;
int N=9999999;
std::向量pts;
对于(i=0;i cout堆栈溢出的经典示例。默认堆栈大小受到限制(例如windows上的1MB)。使用Myc*pts=new Myc[N];
或std::vector pts;pts.resize(N)
数组数据存储在堆栈上,堆栈没有足够的空间容纳一百万个元素。您可以使用std::vector
或者甚至可以使用动态数组。当存在999999
对象时,最好保留所需的空间,pts.reserve(N);
。
#include <vector>
class Myc{
public:
double x,y,z;
Myc(double _x=0 ,double _y=0,double _z=0){
x=_x;y=_y;z=_z;
}
};
int main(){
int i;
int N=151000;
std::vector<Myc> pts(N); // stores its data in the free store (heap)
for (i=0;i<N;i++){
pts[i] = Myc(1,1,1);
}
cout << pts[999].x <<endl;
return 0;
}
int main(){
int i;
int N = 9999999;
std::vector<Myc> pts;
for (i = 0; i < N; i++)
{
pts.emplace_back(Myc(1, 1, 1));
}
cout << pts[999].x <<endl;
return 0;
}