Почему я не могу установить значения данных для указателя, указывающего на ноль - PullRequest
0 голосов
/ 18 ноября 2018
struct avail
{
    int value;
    uint64_t y[8][5];
    avail **masks;
};
avail *n = new avail;
n->masks = new avail*[48];

Теперь скажите, что я должен установить некоторые данные n->masks[i]->y[1][3]=0x000000000000000F

Почему я не могу сделать это, если я

n->masks[i]=NULL;

Я не хочу никакой иерархии, такой как связанный список. Я получаю ошибку nullptr. Если я ничего не делаю для установки указателя, я получаю Access Violation. Куда мне направить этот указатель, если я не хочу использовать его «ссылки» для создания какого-либо дерева / иерархии.

Это работает, только если я установил

n->masks[i]=n;

Но я думаю, что это перезапишет хранилище данных. Что-то не так с моей реализацией? Куда мне его направить, если я просто хочу установить его данные?

1 Ответ

0 голосов
/ 18 ноября 2018

Потому что, если указатель нулевой, вы указываете на адрес, на который не можете писать. Вы всегда можете написать выделенный адрес, стек или кучу.

Выделите свои маски, а затем используйте их:

n->masks[i] = new avail;

Но не забудьте удалить выделенные объекты. Похоже, masks должно быть std::vector<std::unique_ptr<avail>>.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...