memcpy_s是windows下的一种安全内存操作函数,但是linux下并没有实现,在此自己实现一个类似功能的函数memcpy_st:
int memcpy_st(void *det, size_t detSize, const void * src, size_t srcSize, char *cppName, uint32_t lineNumber)
{
uint8_t errorcode = 0;
if (srcSize > detSize || src == NULL || det == NULL)
{
if (srcSize > detSize)
errorcode = 1;
else if (src == NULL)
errorcode = 2;
else if (det == NULL)
errorcode = 3;
//printf("[waring] %s.%d memcpy_s is error:%d!\n", cppName, lineNumber, errorcode);
printf("[waring] %s.%d memcpy_s is error:%d [%d---%d]!\n", cppName, lineNumber, errorcode,srcSize, detSize);
fflush(stdout);
return -1;
}
else
memcpy(det, src, srcSize);
return 1;
}
参数cppName是调用该函数所在的源文件的名称,可通过宏__FILE__获得;
参数lineNumber时调用该函数所在源文件的行号,可通过宏__LINE__获得;
读后有收获可以支付宝请作者喝咖啡: