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

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

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

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

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

最佳答案

您在元素中提供大小,但是memset期望大小以字节为单位。所以这应该解决它:

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

关于c++ - Memset不能填充整个指针数组C++,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58351994/

10-12 23:57