Visual C ++ / HEAP Linker-Option - PullRequest
       13

Visual C ++ / HEAP Linker-Option

0 голосов
/ 03 июля 2011

В настоящее время у меня есть некоторые проблемы с кучей в моей программе.Пока я гулял по интернету, чтобы найти решения, я наткнулся на страницу из MSDN, где описаны некоторые варианты компоновщика для выделения кучи, которые я не понимаю.

В документации сказано, что вы можетеустановить размер кучи с помощью /HEAP.

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

Что именно тогда делает опция / HEAP?

Спасибо

Ответы [ 2 ]

1 голос
/ 03 июля 2011

windows предоставляет .exes (обрабатывает) память, предоставляя им доступ для чтения / записи к страницам памяти.Программисту C ++ следует оставить его в операционной системе, никогда не путать с

/ HEAP 1,000,000 означает, что .exe запускается с объемом страниц в 1 000 000 байтов ... НАЧАТЬ СИзменение этого значения ни на что не должно повлиять.Windows автоматически страниц в памяти.Это просто подсказка для окон, чтобы дать этому процессу память, необходимую для производительности.

1 голос
/ 03 июля 2011

Я думаю, что вы путаете кучу ОС (функция HeapAlloc), которая управляется PE-заголовком, который, в свою очередь, задается этим параметром компоновщика, и динамическим выделением вашей библиотеки времени выполнения C ++ (malloc, new),возможно, захватите память непосредственно из ОС, используя VirtualAlloc, и не используйте кучу ОС.

Для получения дополнительной информации о параметрах кучи ОС прочитайте документацию MSDN для CreateHeap.

...