我的计算机中有一个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个值),那也很好。
答案 0 :(得分:4)
您以元素为单位给出了大小,但是memset
期望大小以字节为单位。所以这应该解决它:
memset((void*)pixels, BLACK_CLR, w_widthxheight * sizeof( COLORREF ) );