c++ memset

memset以字节为单位初始化指针指向值。
char data[10]; //1字节
memset(data, 1, sizeof(data));
memset(data, 0, sizeof(data));

int data[10]; //32位 4字节
memset(data, 0, sizeof(data)); // right
memset(data, -1, sizeof(data)); // right
memset(data, 1, sizeof(data)); // wrong,

比如置为1,那么赋值的结果应该是00000001000000010000000100000001,为16843009。

当结构体类型中包含指针

struct Parameters {
int x;
int* p_x;
};
Parameters par;
par.p_x = new int[10];
memset(&par, 0, sizeof(par));
p_x地址被初始化为0,导致内存泄漏。对std::vector等数据类型,也不应该使用memset来初始化的。

你可能感兴趣的:(c++ memset)