Краш при чтении адреса который не существует

Начинающий
Статус
Оффлайн
Регистрация
27 Мар 2021
Сообщения
23
Реакции[?]
2
Поинты[?]
0
C++

Читаю список который может состоять из 512 или 1024 вещей (данные постоянно могут меняться зависит от количества вещей вокруг), если читать адрес который не существует то крашит игру, помогите.
Читаю так:
uintptr_t getadr = offsetsM::GetPointerAddress(baseAddr + 0x1CC7298, { x, 0xC, 0x0 });

Как читаю:
C++:
DWORD  offsetsM::GetPointerAddress(DWORD ptr, std::vector<DWORD> offsets)
{
    DWORD addr = ptr;
    if (&addr != nullptr)
    {
        for (int i = 0; i < offsets.size(); ++i)
        {
            if (addr != NULL)
            {
                addr = *(DWORD*)addr;
                if (addr && &addr != nullptr && addr != NULL)
                {
                    addr += offsets[i];
                }
                else
                {
                    return ptr;
                }
            }
        }
        return addr;
    }
}
 
Участник
Статус
Оффлайн
Регистрация
28 Окт 2019
Сообщения
1,147
Реакции[?]
302
Поинты[?]
3K
Important This function is obsolete and should not be used. Despite its name, it does not guarantee that the pointer is valid or that the memory pointed to is safe to use.
" should not be", "not guarantee". В некоторых ситуациях работает, но не гарантировано, что и указано в документации
 
Легенда форума
Статус
Оффлайн
Регистрация
10 Дек 2018
Сообщения
4,371
Реакции[?]
2,278
Поинты[?]
182K
Вроде б как похожая проблема:
Пожалуйста, авторизуйтесь для просмотра ссылки.

Насколько я понимаю, неинициализированные указатели заполняются 0xccccce0, попробуй сделать чек на это.

Но я на 70% уверен, что это немного не то))
 
Сверху Снизу