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++的主要内容,如果未能解决你的问题,请参考以下文章