2017-03-10 123 views
0

我有一个程序需要使用大型数组(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文件读取)。在我打算如何使用它

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

样品:


这不(根据到Visual Studio太多的初始值)工作

#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; 
} 
+2

为什么不试图保持你的第一个代码'byte array1 [10000] = ...'但添加'static'不将你的数组存储在栈中? –

+1

向我们提供该计划的完整背景,这是我们帮助您的一部分。另外,C中使用'malloc';总是在C++中使用'new []'。 – qxz

+0

@qxz正在处理它。 – pandalion98

回答

3

如果你可以使用C++ 11编译器,你应该使用std::vector

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