那日review代码,比较引起争议的一件事。关于memcpy是否能catch的问题。
刚才小试了一下,代码如下。
结论是,是cacth不到的。搜了下,原因是,memcpy是c 而来,未进行exception 机制。。。
http://stackoverflow.com/questions/7164019/does-memcpy-not-throw-exceptions
//
#include <memory.h>
#include <Windows.h>
int fun();
int main()
{
return fun();
return 0;
}
int fun()
{
try{
int nSrcLen= 100;
short *pSrcBuf= new short[nSrcLen];
memset(pSrcBuf,0,nSrcLen*sizeof(short));
int nDstLen= 50;
short *pDstBuf= new short[nDstLen];
//short *pDstBuf = NULL;
//running error-
memcpy(pDstBuf,pSrcBuf,sizeof(short)*nSrcLen);
}
catch(...)
//_except
{
return -1;
}
return 0;
}