内存集设置随机值
memset sets random values
这是代码:
#include <iostream>
#include <cstring>
int main()
{
int win[11];
std::memset(win, 1, sizeof(win));
for (int i = 0; i < 11; ++i)
std::cout << win[i] << ' ';
std::cout << std::endl;
return 0;
}
我认为这里没有逻辑缺陷吗? 但是我没有打印一串1
,而是得到了16843009
.
如果我将memset
更改为std::memset(win, 0, sizeof(win))
. 然后一切都如预期的那样。 win的内容都是零。
我在这里错过了什么吗?
我在Ubuntu 13.04
上使用g++ 4.7.3
.
很抱歉这个重复的问题。
这是答案。 谢谢
为什么 "memset(arr, -1, sizeof(arr(/sizeof(int((" 没有将整数数组清除为 -1?
int
通常有四个字节长。但是memset
设置单个字节的值,因此您将每个值设置为 0x01010101,这恰好等于 16843009。
memset
函数在不以任何方式理解其结构的情况下写入内存。如果你在会计报告中写了一堆随机1
,这会让报告显示公司花了 1 美元吗?我不这么认为。也许它会显示111111
美元。也许不是。谁知道呢。
要智能地修改对象的值,您必须了解其结构。memset
函数不理解win
的结构,只是在其字节上涂鸦1
。这意味着什么,memset
不知道也不关心。
相关文章:
- 为不同配置设置MSVC_RUNTIME_LIBRARY的正确方法是什么
- 在C++/Linux中设置单调时钟的一些技巧
- 为什么随机数生成器不在void函数中随机化数字,而在main函数中随机化
- 如何在选项卡视图Qt中设置一个新项目,并保存以前的项目
- 为什么 Serial.println(<char[]>);返回随机字符?
- 嵌套在类中时无法设置成员数据
- 字符串-C++后显示的随机字符
- 如何自定义设置随机的范围?
- 除了 rand() 之外,是否有任何随机生成器库,开发人员可以手动设置种子?
- 在运行时为随机分布类成员设置最小和最大边界?
- 设置随机获得物品的几率(C++)?
- 如何在QT中设置样式表以选择假发背景的随机图像
- 浏览器将随机HTTP消息正文发送到我的boost.asio服务器.我可以更改此设置吗?
- 最佳的c++方式来随机选择设置位在位集中的位置
- 设置随机种子独立rmath库
- C++ - 将 0 到 9 之间的整数设置为特征库矩阵的随机值
- 有没有办法使用犰狳 C++ 库在 C++ 中设置独立的随机流
- 内存集设置随机值
- 设置随机内存地址的值
- 子对象(看似)随机设置为 NULL 或"非法对象";如何调试?