Memset 没有填满整个指针数组 c++

Posted

技术标签:

【中文标题】Memset 没有填满整个指针数组 c++【英文标题】:Memset doesn't fill the whole pointer array c++ 【发布时间】:2019-10-12 07:42:30 【问题描述】:

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

我去了http://www.cplusplus.com/reference/cstring/memset/,它没有说明最大尺寸。另外,我的变量是 size_t (unsigned int),所以如果我输入的值比预期的高,它应该返回一个错误,但它在范围内。

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

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

如果有任何 memset 的替代方案,因为我已经读到它在某处效率低下(但在数组的前 x 值上工作正常),它也会很好。

【问题讨论】:

【参考方案1】:

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

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

【讨论】:

以上是关于Memset 没有填满整个指针数组 c++的主要内容,如果未能解决你的问题,请参考以下文章

指向整个数组的C ++指针[重复]

memset 中的第一个参数传递数组或指针

指针给出整个数组而不是 C++ RayLib 中的一个字符

拒绝手滑,我们都是稳准狠C++のmemset函数的小探究

使用 memset 初始化指针元素的二维数组

⛸️拒绝手滑,我们都是稳准狠⛸️C++のmemset函数的小探究