c++ - exe 可以小于其最大的声明缓冲区吗?

标签 c++ c windows visual-studio buffer

我问的原因:

#include <string.h>

using namespace std;

int main()
{
    unsigned char file[512000];
    unsigned char key[512000];
    for(int i = 0; i < 512000; i++)
            file[i] = key[i];
    return 0;
}

当我在 Windows 上使用 cl.exe 编译它时,我得到一个大小约为 31kb 的可执行文件。每个缓冲区本身都是 500kb。这有什么意义?它的一部分会分配在堆上吗?如果我用数据初始化它们,那么大小是否正确?

最佳答案

在这种情况下,缓冲区将在程序的 stack space 上分配。在运行时。无需将它们静态内置到 exe 文件中。

关于c++ - exe 可以小于其最大的声明缓冲区吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4718403/

相关文章:

windows - Windows 的超时等效值

c++ - 分配 std::shared_ptr

java - 在 Haxe 中检测目标语言

javascript - 从 Javascript 中的 C float 组读取原始字节(转换为 JS 数组)

linux - 模仿特定的 USB 设备

c++ - 模拟 MFC C++

c++ - 在 vector 中放置派生的可移动但不可复制会产生编译错误

c++ - 为什么 c++ std::min 在 O0 上编译时不能使用静态字段作为其参数?

c - 唤醒单个线程而不是在 pthreads 中忙于等待

c# - 访问 C 和 C# 中函数的返回值