Как проверить, была ли память инициализирована? - PullRequest
1 голос
/ 31 марта 2010

Есть ли способ проверить, была ли инициализирована память, указанная указателем? (Не обязательно моей программой).
Спасибо

Ответы [ 4 ]

7 голосов
/ 31 марта 2010

номер

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

1 голос
/ 31 марта 2010

Единственным способом было бы определить «неинициализированное значение», такое как 0x0 (только потому, что), и использовать это внутри вашего приложения, устанавливая всю память, которую вы запрашиваете, с этим значением.

Inвообще нет, не возможно.

0 голосов
/ 31 марта 2010

Не совсем. Возможно, вы сможете сделать что-то низкоуровневое и специфичное для ОС, например, посмотреть, не вызывает ли касание памяти ошибку страницы, но я не могу поверить, что кто-то серьезно задумался бы о том, чтобы сделать что-то подобное, когда должно быть лучшее общее решение.

0 голосов
/ 31 марта 2010

Под «инициализированным» вы, вероятно, подразумеваете «выделенный». В любом случае: нет , это невозможно.

Если указатель НЕДЕЙСТВИТЕЛЕН, вы можете сказать, что он точно не был инициализирован: -)

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