Сборка 0xc0000005: нарушение доступа [дублировать]C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Сборка 0xc0000005: нарушение доступа [дублировать]

Сообщение Anonymous »

Я делал несколько сборке x64 (masm) для выполнения функции printf < /code>, но когда я вернулся из функции, она дала исключение. < /p>

Код: Выделить всё

0xC0000005: Access violation executing location 0x00007FF6AA2F3000.


Вот мой код:
main.cpp

Код: Выделить всё

#include 

#define ASSEMBLY

#ifdef ASSEMBLY

extern "C" int Print();

#else

int Print()
{
printf("Hello, World!");
return 0;
}

#endif

int main()
{
Print();
}
< /code>
print.asm
INCLUDELIB ucrt.lib
INCLUDELIB legacy_stdio_definitions.lib

EXTERN printf: PROC

.DATA
string DB "Hello, World!", 10, 0

.CODE

Print PROC
sub rsp, 20h

lea rcx, string
call printf

mov rax, 0
ret
Print ENDP

END
Моя единственная теория заключается в том, что ret не может вернуться в другой файл. Кто -нибудь может сказать, так ли это или почему?>

Подробнее здесь: https://stackoverflow.com/questions/796 ... -violation
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»