У меня есть назначение, которое должно было оценить некоторые выражения манипуляции указателями и ситуации утечки памяти в C/C++. Там в один я застрял:Передача от шестнадцатеричного до unsigned int * в C++
unsigned int* pInt = (unsigned int*) 0x403004;
Сразу это мне подозрительным, но в задании эта линия теоретически работает, однако, запустив программу я получить Segfault право на этой линии ,
Вопрос в следующем: возможно ли это или возможно, или профессор просто обманывает нас, говоря это правильно? Я видел несколько примеров и вопросы с строкой «Hex» в целом, но ничего относительно «чистый» гекса с Int или междунара *
Если ваша программа не была выделена память по адресу 0x403004 и вы пытаетесь использовать его для чего-нибудь, выдаёт ошибку сегментации является одним из лучшие результаты. – user4581301
проблема не в актере. Проблема заключается в том, что вы делаете с этим указателем впоследствии. В 90% случаев созданный таким образом указатель является фиктивным, и любая попытка сделать что-либо с ним связана с получением segfault. Итак, вы можете рассказать нам больше о задании. –
Вот быстрый эксперимент. Сделайте такую программу: 'int main() {unsigned int * pInt = (unsigned int *) 0x403004; } 'Все, что он делает, это назначить указатель и должен быть действительным, даже если адрес 100% BS, потому что к нему не обращаются. – user4581301