Мой вопрос заключается в том, как повлияет на объем памяти или производительность моего приложения, если я заменю такие функции, как foo1 (который есть в моем коде) ниже с помощью foo2. Эта функция часто вызывается в приложении.
Код: Выделить всё
#define SIZE 5000
void foo1()
{
double data[SIZE];
// ....
}
void foo2()
{
std::unique_ptr< double[] > data( new double[SIZE] );
// ....
}
Мое приложение MFC загружается очень медленно на работающем встроенном устройстве Windows 7 после внедрения новых функций/модулей. То же приложение быстро загружается на ПК. По крайней мере, одно из различий, и я подозреваю, что причина в том, что оперативной памяти на встроенном устройстве очень мало, всего 768 МБ.
Я отладил его, чтобы выяснить, откуда это происходит. происходит задержка и записываются отметки времени в приложении в процессе загрузки. То, что я обнаружил, было интересно. Когда я дважды щелкаю по исполняемому файлу, запись первой отметки времени занимает около минуты, а после этого он работает быстро, так что вся задержка тут же.
Моя теория заключается в том, что Windows тратит все это время на настройку среды для exe, и после этого она работает быстро. Причина, по которой я подозреваю это, заключается в том, что в приложении в стеке объявлено много больших структур, и мне пришлось переместить некоторые из них в кучу, чтобы избавиться от ошибок переполнения стека даже на ПК с новыми функциями.
Как вы думаете, что является причиной медленной или, точнее, задержки загрузки исполняемого файла на машине с малым объемом оперативной памяти? Как вы думаете, это исправится, если я перенесу все большие структуры из стека в кучу?
Подробнее здесь: https://stackoverflow.com/questions/260 ... pplication