内存集不会填充整个指针数组 c++

Memset doesn't fill the whole pointer array c++

本文关键字:指针 数组 c++ 填充 内存      更新时间:2023-10-16

我的电脑里有一个1049088大小的像素数组,我想完全填充它。但是当我使用 memset 时,它只是被填充到数组的一个点,而不是整个块。

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

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

w_widthxheight是包含1049088的size_t。 像素是大小为相同变量 (w_widthxheight( 的 COLORREF 数组。BLACK_CLR常量包含 0。

如果有 memset 的替代品,因为我读到它在某处效率低下(但数组的前 x 值工作正常(,那也很好。

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

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