Мне нужно проверить производительность моего проекта в Windows.
У меня есть массив массивов rede_conexoes
, и я выделяю каждую позицию в цикле, но после некоторых итераций функция malloc
не работает ивнезапно останавливает мой процесс, прежде чем я могу даже проверить возвращаемое значение и не показывает сообщение об ошибке.
Код прекрасно работает на WSL (Windows Subsystem for Linux) в Windows 10. Для собственного тестирования кода в WindowsЯ установил Mingw-w64 для компилятора gcc (не смог найти лучшего решения, так как необходима поддержка OpenMP).
Вот фрагмент кода с функцией malloc
:
bool **rede_conexoes = (bool**) malloc(num_PL * sizeof(bool*));
...
for(int i = 0; i < num_PL; i++){
rede_conexoes[i] = (bool*)malloc(num_PL*sizeof(bool)); // <- Error occurs here
if(rede_conexoes[i] == NULL) exit(1); // <- Can't get to this line after the error
for(int j = 0; j < num_PL; j++)
fscanf(model, "%d", (int*)&rede_conexoes[i][j]);
}
Я не понимаю, как это может работать без проблем на WSL, но в Windows происходит сбой, и нет сообщения об ошибке.
Я заметил, что он начинает работать, когда num_PL
больше 2^3 = 8
, проблем нетесли num_PL
больше, чем 2^15 = 32768
в Linux.Я протестировал .exe, созданный gcc в командной строке (cmd) и PowerShell, оба с одинаковыми результатами.