在程序集中发生访问冲突写入位置

时间:2017-02-16 18:22:00

标签: c++ visual-studio assembly visual-c++

我在汇编中编程,发生了以下错误:

  

在Application1.exe中0x00B71792处抛出异常:0xC0000005:访问冲突写入位置0x00B76BED。

     

Application1.exe中0x00B71792处的未处理异常:0xC0000005:访问冲突写入位置0x00B76BED。

我正在使用Visual Studio进行编程。以下是我的代码:

PHP Fatal error:  Uncaught Symfony\Component\Debug\Exception\FatalThrowableError: Class 'PDO' not found in /home/origomal/laravel/config/database.php:16

根据调试char *strCat(char *dest, char *src) { __asm { xor eax, eax mov ecx, 0xffffffff mov esi, src mov edi, dest mov al, 0 cld repne scasb dec edi L0 : lodsb stosb test al, al jne L0 mov eax, edi }; } 指令中的错误ocurr。

在我看来,代码是正确的。找不到错误。

1 个答案:

答案 0 :(得分:2)

崩溃的问题在于您尝试将字符连接到字符串文字上。这是C ++(和C)中未定义的行为。

要安全地调用您的功能,您必须

1)确保目标缓冲区足够大以容纳连接字符串,并且

2)目标缓冲区是可写内存,而不是字符串文字。

要使内存可写,一种方法是简单地声明一个大小足以容纳整个连接字符串的char数组:

char destination[100] = "abc";
strCat(destination, "123");