将函数代码复制到另一个地方,并调用debug运行出错?release运行成功?
今天在研究函数代码的执行时,写了下面的程序
#include <stdio.h>
void fun1(int x)
{
printf("%d\n",x);
}
int _tmain(int argc, _TCHAR* argv[])
{
char pppf[200];
memcpy(pppf,(char*)fun1,120);
typedef void (*pf)(int);
pf ppf=(pf)&pppf[0];
ppf(10);//debug error
char* pfun;//用来查看代码空间的值并和复制的值对比
pfun=(char*)fun1;
}
为什么在debug出错?我查看了复制过来的代码是和函数代码空间是一样的,release为什么运行正常?
请高手指点!谢谢!
#include <stdio.h>
void fun1(int x)
{
printf("%d\n",x);
}
int _tmain(int argc, _TCHAR* argv[])
{
char pppf[200];
memcpy(pppf,(char*)fun1,120);
typedef void (*pf)(int);
pf ppf=(pf)&pppf[0];
ppf(10);//debug error
char* pfun;//用来查看代码空间的值并和复制的值对比
pfun=(char*)fun1;
}
为什么在debug出错?我查看了复制过来的代码是和函数代码空间是一样的,release为什么运行正常?
请高手指点!谢谢!
...全文
相关推荐
为什么debug编译不出错,而release编译会出错
该文档介绍了有的工程在debug中编译没有错误,可是在release下编译却报错的原因和解决方案,希望有助于大家学习。
【Debug系列】Debug运行正常但是Release出现错误的原因
目录 一、Debug和Release编译方式的本质区别 二、哪些情况下Release版会出错 三、怎样“调试”Release版的程序 一、Debug和Release编译方式的本质区别 Debug通常称为调试版本,它包含调试信息,并且不作任何优化,便于程序员调试程序。Release称为发布版本,它往往是进行了各种优化,使得程序在代码大小和运行速度上都是最优的,以便用户很好地使用。...
release模式正常debug模式下报错.docx
很多时候在写代码过程中,发现 Debug 下运行正常,Release 下就会出现问题,百思不得其解,而Release 下又无法进行调试,于是只能采用printf方式逐步定位到问题所在处,才发现原来是给定的一个数组未初始化,导致后面处理异常。我们先来看看
VC-Debug-Release]出错的问题解决办法
当调试VC 程序时,经常出现release 版本或者debug版本运行崩溃的问题,本文给出了一些解决方法……
Debug和release的详细区别
VC++里面debug版本和release版本的区别,初学者了解


