内存集设置随机值

memset sets random values

本文关键字:随机 设置 内存      更新时间:2023-10-16

这是代码:

#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不知道也不关心。