Я написал код для чтения данных с адреса. Этот адрес относится к сегменту кода (я разбираю свой двоичный файл и поиск, где находится главная, поэтому адрес оттуда). Основная цель - изменить контент. Когда я его распечатываю, это вызывает segfault. Это какая-то защита?segfault при печати памяти
void at(){
char *p = 0x0000000100000f47;
printf("%c", p[0]);
}
int main(){
at();
return 0;
}
Возможно, вы используете свой код в операционной системе, и эта операционная система не дает вашей программе доступа к физической памяти и не назначает виртуальный адрес 0x0000000100000f47 вашей программе/процессу. – nos
См. Http://stackoverflow.com/q/38686502/4068338 – Matsmath
Почему не 'char * p = (char *) main;'. Таким образом, вам не нужно беспокоиться об абсолютных адресах и переездах. – dxiv