Пытаюсь очистить стек. Создаю структуру после этого помещаю её в стек и пытаюсь очистить его, но на дебагере ничего не происходит. Ни ошибки, ни чего вообще. Что я делаю не так, я хочу разобраться почему такой код не работает. Библиотека /MD оптимизация O2 размер стека 0x4000
struct stub {
DWORD_PTR a;
DWORD_PTR b;
};
int main() {
foo1();
foo2();
foo3();
foo4();
stub stb;
DWORD_PTR adr = (DWORD_PTR)&stb - 0x1000;
ZeroMemory((void*)adr, 0x1000);
}
Этот код будет работать. Но мне нужно удалить верхние адреса стека.
stub stb;
DWORD_PTR adr = (DWORD_PTR)&stb; ////// - 0x1000;
ZeroMemory((void*)adr, 0x1000);
На большинстве мейнстримовых платформ стек растет сверху вниз. Поэтому если вы хотите получить адрес где-то в предыдущей части стека, вам нужно прибавлять значения к текущему адресу вершины, а не вычитать их.
В частности, в вашем случае, если вы хотите обнулить регион размером 0x1000
, это значение вообще не должно фигурировать в процессе вычисления начального адреса региона.
Тут вы смещаетесь на 0x4000 байт, а не на 0x1000 как ожидаете, т.к. работает адресная арифметика. DWORD_PTR + 1 это смещене на следующий 4 байтный объект.
DWORD_PTR adr = (DWORD_PTR)&stb - 0x1000;
Тут вы отчищаете только первые 0x1000 байт, а в дебагере смотрете на последние 0x1000
ZeroMemory((void*)adr, 0x1000);
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Программа находит все перестановки n элементовВ функции perm() в условии пишет, что идентификатор chosen не определен
здраствуйте форумчане, суть моего вопроса состоит в том что надо разбить строку сисволом '=' из переменой env и записать в структуру block
Я начал изучать C++ ООПИ придумал вот такой пример с фабриками по добыче угля и железа
Не понимаю как реализовать QTreeView с checkboxКак обработать событие установки и снятия "галочки"