Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/144.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/3/arrays/14.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++ 动态(非静态)内存c++;?_C++_Arrays_Memory_Malloc - Fatal编程技术网

C++ 动态(非静态)内存c++;?

C++ 动态(非静态)内存c++;?,c++,arrays,memory,malloc,C++,Arrays,Memory,Malloc,创建未定义大小的数组的最佳方法是什么? 我需要将数千个度量值放入一个数组中。这些值由传感器提供。所以我不能只在最后知道我的数组的大小;当传感器停止发射时 我在做这个 #define MAX_SIZE 100000000 double array[MAX_SIZE] 但是,除了具有比MAX_SIZE更多的度量之外,我还从编译器收到以下错误消息: :R_X86_64_32对抗.bss' \u静态\u初始化\u和\u销毁\u 0': 有没有一种方法可以不指定指针的初始(静态)大小,而是让它自动增长

创建未定义大小的数组的最佳方法是什么? 我需要将数千个度量值放入一个数组中。这些值由传感器提供。所以我不能只在最后知道我的数组的大小;当传感器停止发射时

我在做这个

#define MAX_SIZE 100000000

double array[MAX_SIZE]
但是,除了具有比MAX_SIZE更多的度量之外,我还从编译器收到以下错误消息: :R_X86_64_32对抗
.bss'
\u静态\u初始化\u和\u销毁\u 0':

有没有一种方法可以不指定指针的初始(静态)大小,而是让它自动增长


谢谢您的帮助。

我认为最好的方法是使用带有初始保留内存的标准容器
std::vector
。 您还可以使用其成员函数
max_size
来确定可以在向量中分配多少元素

例如,联机MS VC++编译器显示以下值536870911:)

#包括
#包括
int main()
{
std::向量v;

在您的情况下,最好的选择是使用STL向量

#include <iostream>
#include <vector>

using namespace std;

vector<double> v;

int main() {
    v.push_back(3.0); // Add an item
    v.push_back(5.0);
    v.push_back(7.0);
    v.push_back(8.0);

    cout << "v[0]: " << v[0] << endl; // Access an item
    cout << "v[1] + v[2]: " << v[1] + v[2] << endl;

    cout << "Size: " << v.size() << endl; // Size

    v.resize(2); // It will remove items except for the first two

    double sum = 0.0;

    vector<double>::iterator it;
    it = v.begin();
    while (it != v.end())
    {
        sum += *it;
        it++;
    }
    cout << "Sum: " << sum << endl;

    v.resize(0); // It will empty a vector

    cout << "Size: " << v.size() << endl;

    return 0;
}
#包括
#包括
使用名称空间std;
向量v;
int main(){
v、 向后推(3.0);//添加一项
v、 推回(5.0);
v、 推回(7.0);
v、 推回(8.0);

这是使用std::vector的绝佳机会。这就是为什么要使用集合
#include <iostream>
#include <vector>

using namespace std;

vector<double> v;

int main() {
    v.push_back(3.0); // Add an item
    v.push_back(5.0);
    v.push_back(7.0);
    v.push_back(8.0);

    cout << "v[0]: " << v[0] << endl; // Access an item
    cout << "v[1] + v[2]: " << v[1] + v[2] << endl;

    cout << "Size: " << v.size() << endl; // Size

    v.resize(2); // It will remove items except for the first two

    double sum = 0.0;

    vector<double>::iterator it;
    it = v.begin();
    while (it != v.end())
    {
        sum += *it;
        it++;
    }
    cout << "Sum: " << sum << endl;

    v.resize(0); // It will empty a vector

    cout << "Size: " << v.size() << endl;

    return 0;
}