Оригинальный вопрос:
Почему этот указатель 0 в сборке версий VS С++?
При взломе сборки релиза Visual Studio 2008 SP1 с параметрами /Zi (компилятор: отладочный информационный формат - база данных программ) и /DEBUG (компоновщик: генерировать параметры отладки, да), почему 'this' - указатели всегда 0x00000000
EDIT: перефразированный вопрос:
Мой оригинальный вопрос был неясным, извините за это. При использовании отладчика Visual Studio 2008 для перехода через программу я могу видеть все переменные, за исключением локальных переменных-членов объекта. Вероятно, причиной этого является отладчик от этого указателя, но VS всегда говорит об этом 0x00000000, поэтому он не может выводить текущие переменные-члены объекта (он не знает позицию памяти объекта)
При загрузке megadump (как мини-накопитель Windows, но содержащий все пространство памяти процесса), я могу посмотреть на все мои локальные переменные (определенные в функции) и целые древовидные структуры в куче, даже если у меня есть указатели к.
Например: при разрыве A:: foo() в режиме выпуска
'this' будет иметь значение 0x00000000
'f_' покажет мусор
Как-то эта информация должна быть доступна для процесса. Это недостающая функция в VS2008? Любой другой отладчик, который правильно справляется с этим?
class A
{
void foo() { /*break here*/ }
int f_;
};