如何将现有数组值分配给数组指针?

时间:2017-03-10 06:20:29

标签: c++ arrays pointers segmentation-fault

我有一个需要使用大型数组(700,000个元素)的程序。我尝试按照普通数组分配它:

byte array1[700000] = {0xE8, 0x39, 0xF4, 0xB7, 0x69, ~~699995 other values~~ };

然而,我遇到了分段错误。经过一番研究后,有人建议我把它放在堆上。所以,我做了:

byte* array1 = (byte*) malloc(700000 * sizeof(byte) /* Just to be safe */);

我之前使用过指针,通常我会使用循环来搞乱它。但是,在这种情况下,所有值都已存在。如何将所有这些内容放入新array1我无法使用外部文件(即我无法从.txt文件中读取)。

这不起作用(根据Visual Studio,初始化程序值太多):

byte* array1 = (byte*) malloc(700000 * sizeof(byte));
array1 = { ~~ 700k comma-separated values ~~ };

关于我打算如何使用它的示例:

#include <stdio.h>

int main(int argc, char* argv[]) {
    byte big_array[700000] = {0xE8, 0x39, 0xF4, ~~699995 other values~~ };
    some_function(big_array);
    return 0;
}

1 个答案:

答案 0 :(得分:3)

如果您能够使用C ++ 11编译器,则应使用std::vector

std::vector<byte> array1 = {0xE8, 0x39, 0xF4, 0xB7, 0x69, ~~9995 other values~~ };