【发布时间】:2015-02-07 06:33:01
【问题描述】:
我正在尝试编写一个生成x86机器代码的程序,但代码只能在32位winxp上运行。它说“tiny.exe 中 0x776315ee 处的未处理异常:0xC0000005:访问冲突。” win7 64bit,为什么?
#include <stdio.h>
#include <stdlib.h>
#include <memory.h>
int main()
{
char *code = (char *)malloc(1024);
memset(code, 0, 1024);
char opcode = 0xB8;
memcpy(code, &opcode, sizeof(char));
int oprand = 2;
memcpy(code + sizeof(char), &oprand, sizeof(int));
char opret = 0xC3;
memcpy(code + sizeof(char) + sizeof(int), &opret, sizeof(char));
typedef void (* func_t)(void);
func_t func = (func_t)code;
func();
return 0;
}
【问题讨论】:
标签: c visual-c++ compiler-construction compiler-optimization