Memset 不填充整个指针数组 C++
Memset doesn't fill the whole pointer array c++
我的电脑里有一个大小为 1049088 的像素数组,我想把它填满。但是当我使用 memset 时,它只是填充到数组的一个点,而不是整个块。
我去了http://www.cplusplus.com/reference/cstring/memset/,它没有提到最大尺寸。另外,我的变量是 size_t (unsigned int),所以如果我输入的值比预期的高,但它在范围内,它应该 return 给我一个错误。
memset((void*)pixels, BLACK_CLR, w_widthxheight);
w_widthxheight 是一个包含 1049088 的 size_t。
像素是一个 COLORREF 数组,具有相同变量的大小 (w_widthxheight)。 BLACK_CLR 常量包含 0.
如果有任何替代 memset 的方法,因为我读到它在某处效率低下(但在数组的前 x 个值上工作正常),那也很好。
您给出的大小以元素为单位,但 memset
期望大小以字节为单位。所以这应该可以解决它:
memset((void*)pixels, BLACK_CLR, w_widthxheight * sizeof( COLORREF ) );
我的电脑里有一个大小为 1049088 的像素数组,我想把它填满。但是当我使用 memset 时,它只是填充到数组的一个点,而不是整个块。
我去了http://www.cplusplus.com/reference/cstring/memset/,它没有提到最大尺寸。另外,我的变量是 size_t (unsigned int),所以如果我输入的值比预期的高,但它在范围内,它应该 return 给我一个错误。
memset((void*)pixels, BLACK_CLR, w_widthxheight);
w_widthxheight 是一个包含 1049088 的 size_t。 像素是一个 COLORREF 数组,具有相同变量的大小 (w_widthxheight)。 BLACK_CLR 常量包含 0.
如果有任何替代 memset 的方法,因为我读到它在某处效率低下(但在数组的前 x 个值上工作正常),那也很好。
您给出的大小以元素为单位,但 memset
期望大小以字节为单位。所以这应该可以解决它:
memset((void*)pixels, BLACK_CLR, w_widthxheight * sizeof( COLORREF ) );