Сейчас на форуме: Rio, tyns777, zombi-vadim (+7 невидимых) |
eXeL@B —› Программирование —› Visual Studio: новая секция, нарушение прав доступа при выделении памяти (0xC0000005) |
Посл.ответ | Сообщение |
|
Создано: 12 июля 2014 22:46 · Поправил: Crawler · Личное сообщение · #1 Есть программа, в которой выделяется новая секция кода: Code:
(в main.cpp, соответственно, пишется #pragma comment(linker, "/entry:Func") - чтобы сначала вызывалась функция из новой секции). Ошибка происходит при выделении памяти (Необработанное исключение по адресу 0xBB40E64E в application.exe: 0xC0000005: нарушение прав доступа при исполнении по адресу 0xBB40E64E). Причем и в дебаг, и в релиз-версиях. Это наверняка связано с тем, что я неправильно создал секцию (что-то не учел). Буду благодарен за помощь! ----- Харе курить веники и нюхать клей, к вам едет из Америки бог Шива, и он еврей. |
|
Создано: 12 июля 2014 22:57 · Личное сообщение · #2 а что это вообще? длл или что? в обычных программах для вызова чего то до вызова main статические обьекты запускаются их и создавайте если что то хотите вызвать раньше да и tmain там к какому месту? malloc попробуй думаю секция там не причем хотя код надо смотреть что там студия нагенерила | Сообщение посчитали полезным: Crawler |
|
Создано: 12 июля 2014 23:04 · Личное сообщение · #3 Ну видимо так как crtMain вы изменили то C++ runtime не инициализирован, следовательно оператор new сбоит | Сообщение посчитали полезным: Crawler |
|
Создано: 12 июля 2014 23:05 · Поправил: deniskore · Личное сообщение · #4 Проверил, все работает, никаких исключений. Code:
| Сообщение посчитали полезным: Crawler |
|
Создано: 12 июля 2014 23:10 · Личное сообщение · #5 |
|
Создано: 13 июля 2014 01:32 · Поправил: Crawler · Личное сообщение · #6 Вы абсолютно правы, действительно, переставил местами функции (запилил основной код в новой секции, а в main () поместил содержимое моей секции, вызываемой первой. Не учел, что во время инициализации, в том числе, (цитата): Происходит инициализация динамической памяти (кучи). Я думал, что если линкеру явно задать функцию параметром /entry, то он будет ее использовать вместо main (вроде обычного переименования). Ошибся, инициализация действительно происходит с вызовом main. Всем большое спасибо! Да, и это я экспериментировал с антиэмуляцией и антиотладкой - в отдельной секции для удобства пилю кое-какие потоки с таймерами, разными проверками и так далее ----- Харе курить веники и нюхать клей, к вам едет из Америки бог Шива, и он еврей. |
eXeL@B —› Программирование —› Visual Studio: новая секция, нарушение прав доступа при выделении памяти (0xC0000005) |
Эта тема закрыта. Ответы больше не принимаются. |