2013-02-09 6 views
0

Я пытаюсь исправить ошибку ошибки сегментации, которая возникает, когда я запускаю программу на C++, вызванную структурой, которую я называю слишком большой. Я ищу способ использовать мою ранее существовавшую структуру C++ и переместить ее из стека в кучу.Ошибка сегментации из-за большого 2D-массива в структуре C++

Мой код выглядит следующим образом:

n = 300; 

struct arrayStruct { 
    double arr[n][n]; 
}; 

int main(int argc, char *argv[]){ 

    arrayStruct temperature; 
    // do a bunch of stuff including passing and receiving the arrayStruct within a few functions 
return 0 

} 

Я попытался с помощью таНос и новый, но, кажется, только получить ошибки, которые я не имею ни малейшего представления о том, как их исправить. Я пробовал в структуре, а также в основном файле, но не могу заставить его работать.

Заранее спасибо

+0

Я не могу заставить его обратиться к структур. Если бы я смотрел на простой 2D-массив, который определен только в функции, я был бы хорош. Проблема в том, что я получаю ее в 2D-массив в структуре. – jeremy

+0

Просто выделите экземпляр 'arrayStruct' в куче:' std :: unique_ptr temperature (new arrayStruct()); ' –

ответ

0

Использование Try вектора для создания 2D массива:

#include <vector> 

struct arrayStruct { 
    arrayStruct() 
    : arr(n, std::vector<double>(n)) 
    { 
    } 
    std::vector<std::vector<double>> arr; 
}; 
0

Вы можете выделить экземпляр arrayStruct на куче:

std::unique_ptr<arrayStruct> temperature(new arrayStruct()); 
+0

Итак, проблема с этой реализацией заключается в том, что она, похоже, не инициирует arr. Я получаю ошибку: ошибка: преобразование из 'std :: unique_ptr >' в нескалярный тип 'arrayStruct' запрошен – jeremy

Смежные вопросы