safe memcpy
사용법
uiSize = sizeof( D3DXVECTOR2 );
SafeMemcpy(dstbuffer, srcbuffer, uiSize, start(여기선 dstbuffer), 마지막위치(여기선 dstbuffer + (uSize+1)));
이런식으로 사용하면 된다.
그냥 간단히 src와 dst, 그리고 복사할만큼의 크기로 memcpy할때 안전한지 체크한다.
그다지 쓸일이 많지 않기도 하지만 중요한 부분을 처리할때는 이렇게 사용해도 괜춘은듯.
그냥 api보고 베껴서 만들었다.흐헤헤.
BOOL SafeMemcpy(void *dst, void *src, size_t n, void *start, void *end)
{
if(n < 1)
{
#ifdef _DEBUG
MGASSERT(!"Font memcpy fail");
#endif
return FALSE;
}
if(!inBounds((u_int8_t*)start,(u_int8_t*)end, (u_int8_t*)dst) || !inBounds((u_int8_t*)start,(u_int8_t*)end,((u_int8_t*)dst)+n))
{
#ifdef _DEBUG
MGASSERT(!"Font memcpy fail");
#endif
return FALSE;
}
memcpy(dst, src, n);
return TRUE;
}
int inBounds(u_int8_t *start, u_int8_t *end, u_int8_t *p)
{
if(p >= start && p < end)
{
return 1;
}
return 0;
}
'Study > C++' 카테고리의 다른 글
stl을 DLL제작시 문제점..warning C4251: 에 대한 대처 (0) | 2010.11.10 |
---|---|
RTTI (0) | 2010.11.07 |
pointer to member function의 크기? (0) | 2010.10.24 |
The <algorithm> header doesn't seem to contain std::min() and std::max() any longer (0) | 2010.09.08 |
boost 설치 하기 (0) | 2010.08.10 |