使用memcpy()函数出现如下错误:
int main()
{
int *chunk = (int *)malloc(10*sizeof(int));
//chunk[5] = 20;
for(int i = 0;
i<10;
i++)
{
chunk[i] = i;
}
memcpy(chunk ,0 , 10*sizeof(int));
printf("chunk 9 is%d\n",chunk[5]);
free(chunk);
}
warning: null argument where non-null required (argument 2) [-Wnonnull]
memcpy(chunk ,0x00 ,9*sizeof(int));
这句话是个编译警告,意思是说把空自变量(null argument),即0,赋值给了标明属性为非零指针的参数。这个问题是由于参数不匹配引起的
例如memcpy (void *dest, const void *src, size_t len)函数,其第1和第2个参数即为非零指针。如果将0值写入该参数后,就会引起该警告。
解决方法为:
可以将0值赋给一个变量,然后将该变量的指针赋给该参数即可。
int main()
{
int *chunk = (int *)malloc(10*sizeof(int));
//chunk[5] = 20;
for(int i = 0;
i<10;
i++)
{
chunk[i] = i;
}
int a = 0;
memcpy(chunk ,&a , 10*sizeof(int));
printf("chunk 9 is%d\n",chunk[5]);
free(chunk);
}
【memcpy()】
推荐阅读
- C语言学习|第十一届蓝桥杯省赛 大学B组 C/C++ 第一场
- 【C】题目|【C语言】题集 of ⑥
- 单片机|自学单片机好找工作吗(会单片机能找什么工作?)
- 单片机|keil把源代码生成lib的方法
- c语言|一文搞懂栈(stack)、堆(heap)、单片机裸机内存管理malloc
- c语言|C语言初期学习遇到的特殊点 【三子棋详解】【初学者福音,详细总结,复习能手】
- 笔记|C语言数据结构——二叉树的顺序存储和二叉树的遍历
- 个人理解|【C语言基础之类型转换】
- c语言|【C语言】自定义类型 结构体 枚举 联合
- 学习分享|【C语言函数基础】