You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C++中如何为VirtualAlloc分配的1024MB缓冲区填充数值9

实现方案

你可以通过两种常用方式完成缓冲区填充,分别是标准库函数调用和手动遍历写入,两种方式的实现如下:

方案1:使用memset直接填充(推荐,性能最优)

memset是标准库专门用于内存块批量赋值的函数,底层做了指令级优化,性能远高于手动遍历,实现代码如下:

#include <cstring> // 引入memset头文件
#include <windows.h>

// 你已有的缓冲区创建代码
LPVOID buffer = VirtualAlloc(nullptr, (1 * 1024 * 1024) * 1024, MEM_COMMIT, PAGE_READWRITE);
if (buffer != nullptr) {
    // 填充全部缓冲区为数值9,第三个参数为要填充的字节数,这里刚好是1024MB
    memset(buffer, 9, (1 * 1024 * 1024) * 1024);
}

注意:memset是按字节赋值,如果你要填充的是大于1字节的类型(比如int、long),需要使用对应批量赋值函数,你的需求是填充数值9,单字节场景下直接使用即可。

方案2:手动遍历写入

如果你需要自主控制遍历逻辑,也可以直接转成字节指针逐位写入:

#include <windows.h>

// 你已有的缓冲区创建代码
LPVOID buffer = VirtualAlloc(nullptr, (1 * 1024 * 1024) * 1024, MEM_COMMIT, PAGE_READWRITE);
if (buffer != nullptr) {
    // 转成字节指针遍历,也可替换为unsigned char*保证跨平台兼容性
    BYTE* byteBuffer = static_cast<BYTE*>(buffer);
    const size_t bufferSize = (1 * 1024 * 1024) * 1024;
    for (size_t i = 0; i < bufferSize; ++i) {
        byteBuffer[i] = 9;
    }
}

内容的提问来源于stack exchange,提问作者James Franco

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 23:42:03