Основное применение моего, рушится во время работы.Распределение памяти - как 15 ГБ может быть равным 2 ГБ?
Я хочу узнать, связано ли это с проблемой выделения памяти системой. Таким образом, я создал небольшую тестовую программу для выделения 1 ГБ памяти и одновременно выполнил 15 таких процессов, таким образом, используя в общей сложности 15 ГБ ОЗУ.
Однако, когда я запускаю эту программу, диспетчер задач показывает, что он занял только 2 ГБ ОЗУ? Как это возможно?
Я написал пример кода следующим образом
char *ptr[1024];
for (i = 0 ; i < 1024 ; ++i)
{
ptr[i] = new char[1024 * 1024];
std::cout << " Allocated 1024 MB" << i << " th time " << std::endl;
}
Возможно, операционная система overcommits? I. e., 'New' возвращает действительный указатель, хотя памяти недостаточно.Попробуйте * на самом деле * вырвать что-то в полученную память, и ваш процесс, вероятно, будет убит. –
Диспетчер задач не отображает «занятый объем памяти». Он показывает [рабочие наборы] (http://windows.microsoft.com/en-us/windows-vista/what-do-the-task-manager-memory-columns-mean), и это совсем другое. –