Memset不能填充整个指针数组C ++

时间:2019-10-12 07:42:30

标签: c++ memset

我的计算机中有一个1049088大小的像素阵列,我想完全填充它。但是当我使用memset时,它只会填充到数组的某个点,而不是整个块。

我去过http://www.cplusplus.com/reference/cstring/memset/,但没有说出最大尺寸。另外,我的变量是size_t(无符号整数),因此如果我输入的值比预期的高,它应该返回一个错误,但它在范围内。

configItems = Extension.Contents("api.json");
tenantId = Json.Document(configItems)[tenantId];
applicationId = Json.Document(configItems)[applicationId];
redirect_uri = Json.Document(configItems)[redirect_uri]

w_widthxheight是一个size_t,其中包含1049088。 像素是一个COLORREF数组,其大小相同(w_widthxheight)。 BLACK_CLR常数包含0。

如果有除memset之外的任何替代方法,因为我已经读到它在某处效率不高(但可以很好地处理数组的前x个值),那也很好。

1 个答案:

答案 0 :(得分:4)

您以元素为单位给出了大小,但是memset期望大小以字节为单位。所以这应该解决它:

memset((void*)pixels, BLACK_CLR, w_widthxheight * sizeof( COLORREF ) );