Используя разработчика Visual Studio - “Ссылка на объект не набор к экземпляру объекта” (Visual Studio 2008)

Я не думаю, что кто-то упоминал об этом, но у alloca также есть некоторые серьезные проблемы с безопасностью, которые не обязательно присутствуют в malloc (хотя эти проблемы также возникают с любыми массивами на основе стека, динамическими или нет). Так как память выделяется в стеке, переполнение / переполнение буфера имеет гораздо более серьезные последствия, чем просто malloc.

В частности, адрес возврата для функции хранится в стеке. Если это значение будет повреждено, ваш код может быть перемещен в любую исполняемую область памяти. Компиляторы идут на все, чтобы сделать это трудным (в частности, путем рандомизации размещения адресов). Тем не менее, это явно хуже, чем просто переполнение стека, так как лучший случай - SEGFAULT, если возвращаемое значение повреждено, но он также может начать выполнять случайный фрагмент памяти или в худшем случае некоторую область памяти, которая ставит под угрозу безопасность вашей программы. .

5
задан Peter Mortensen 11 June 2012 в 15:15
поделиться

2 ответа

У вас есть ошибка в режиме разработки для некоторого настраиваемого элемента управления, вероятно, PageScroller, и, очевидно, начиная с конструктора. Возможно, в конструкторе есть какой-то код, который возвращает значение null в режиме разработки, и это значение не проверяется.

4
ответ дан 14 December 2019 в 13:45
поделиться

Иногда я вижу подобные проблемы. Я начал переносить код из конструктора в событие загрузки, и это помогло.

2
ответ дан 14 December 2019 в 13:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: