Мой вопрос довольно прост и прост: если у меня есть, например, 1 МБ ОЗУ, назначенной стеку программ, могу ли я получить адреса начала и конца, или начало и длину?
Я использую Visual Studio 2013.
Ответ 1
Вы должны задать вопрос о своих предположениях о расположении стека.
Более ранние версии должны использовать VirtualQueryEx и обрабатывать результаты несколько. Получение одного адреса в стеке легко, просто используйте & для локальной переменной. Затем вам нужно найти пределы зарезервированного региона, который включает этот адрес. Джо Даффи написал сообщение в блоге, в котором показаны детали поиска нижнего адреса стека
Ответ 2
GetCurrentThreadStackLimits похоже, делает то, что вы ищете, получая нижние/верхние границы стека в адрес указателя: