2017-03-10 122 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~~ };