我正在尝试将char指针指向的数据归零,如:
int my_function(char *data) {
// something here...
memset(data, 0, sizeof(data));
//...
}
它不工作,因为memset
函数应用于指针而不是数据本身。
如何在数据本身上调用memset
函数进入内存?
sizeof(data)
返回对象data
类型的字节大小,在本例中为char*
,即它返回存储字符指针所需的字节数但不是实际的字符数组。char*
类型不存储它所指向的字符数组的大小,您必须在size_t
中单独存储该大小(见1)。
void* memset( void* str, int ch, size_t n);
n
是从位置str
开始的字节数,将全部设置为值ch
。包含n
个元素的类型为T
的数组的字节大小由sizeof(T[n])
返回(在size_t
中)。
1:size_t
的行为与unsigned int
完全相同,但可能具有不同的数字容量,它的最大值是您可以分配给数组的最大字节数。