Я не могу выделить память для моего 1D массива в C++. Я пробовал использовать malloc и новый оператор. merge
имеет значение 0, когда я использую malloc. В случае нового оператора я получаю исключение std::bad_alloc at memory location ...
. data_length
имеет значение 131596814. У меня есть 8 ГБ бара, и много его бесплатно. Я использую Visual Studio 2012, а режим Debug/Release не влияет на него.Unsigned int array allocation
unsigned int* merge = (unsigned int*) malloc(2 * data_length * sizeof(unsigned int));
unsigned int* merge = new unsigned int[data_length * 2];
Я делаю что-то неправильно здесь?
Компиляция в 32-битном режиме? – Mat
Помните, что при распределении памяти распределение будет одним большим непрерывным куском, поэтому, если нет непрерывного почти 5 гигабайт памяти (4 раза 131596814), доступное распределение будет терпеть неудачу. –
Помните, что если ваш компьютер имеет 8 ГБ памяти, он будет совместно использоваться другими исполняемыми файлами и задачами **. Возможно, у вашей программы не хватает этой суммы. Возможно, вам придется делать что-то старомодным способом и обрабатывать данные в кусках/фрагментах, в зависимости от того, сколько памяти выделено вашей программе. –