#include <stdio.h>
#include <string.h>
int main()
{
char arrDst[5] = {0};
char arrSrc[10] = "123456";
memcpy( arrDst, arrSrc, sizeof( arrSrc ) );
return 0;
}
在这个程序中很明显存在内存损坏问题。是否有gcc编译器的选项能够在编译时就识别出这个问题?注意:我已经使用了valgrind --leak-check=full,但没有帮助。
memcpy
的语义; 这个名称是由C标准保留用于实现,即使你编写自己的memcpy
函数并执行不同的操作,编译器也可以忽略它,并假定你正在调用<string.h>
函数。 - Stephen Canon