前两天在调试代码时,发现了一个比较低级的错误:对于memset和memcpy接口的参数错误使用。在这里总结一下,避免以后再犯。 先说一下我的错误教训。
- memset的使用,代码如下
- memcpy的使用,代码如下
1
2
3
4
5
|
INT16 i16ADBuf[4096];
...
memset
(i16ADBuf, 6,
sizeof
(i16ADBuf));
...
|
1
2
3
4
5
6
7
|
INT16 i16ADBuf[4096];
INT16 g_i16ADBuf[4096];
int
pointNum = 205;
...
memcpy
(g_i16ADBuf,i16ADBuf, pointNum);
...
|
- C标准库中头文件中memset和memcpy的接口为:
- 为了实现我的目的,第一个使用memset是没法实现了,只能用循环进行赋值;第二个就是count参数需要乘以数据类型的字节数,这里是sizeof(INT16)。
1
2
3
4
5
6
7
|
#include <string.h>
//把buf中的前count个字符替换为ch,并返回buf。
void
*
memset
(
void
*buf,
int
ch,
size_t
count);
//把from中的count个字符拷贝到to中。并返回to
void
*
memcpy
(
void
*to,
const
void
*from,
size_t
count);
|
来源:oschina
链接:https://my.oschina.net/u/195885/blog/79893