[英]memset array inside structure c
我试图memset结构内部存在的一个整数数组:
typedef struct _xyz {
int zList[9000];
} xyz;
int dll_tmain(void)
{
xyz *Xyz = (xyz *) calloc(10, sizeof(xyz));
memset((&Xyz[0])->zList, 1, 9000);
}
我在memset()中尝试了很多变体,但都没有用。 该数字不是初始化为1,而是一些巨大的价值;
请记住, memset
集将数组的每个字节设置为相同的值。 因此,您要将值1的字节复制到数组的前9000个字节中。假设4个字节的整数,这意味着您将分配一个值为0x01010101
的int。 但是,更重要的是,您没有分配给整个数组,仅分配了数组的前1/4,再次假定了4个字节的整数。
memset
无法完成您想要的事情。 请使用for循环。
您想要设置的“值”作为整数传递给memset,但是memset“使用该值的无符号char转换”一次填充一个字节来填充内存块。
因此,您将前9000个字节填充为值0x01。 int通常为2、4或8个字节,而不是1个字节。
只需编写自己的循环即可。 如果由于某种原因不想编写自己的代码,请检查系统是否具有wmemset,然后检查wchar_t是否与int相同,然后您就很讨厌使用wmemset。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.