繁体   English   中英

结构c内部的memset数组

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM