Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/127.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我的编译C++;程序太小了。我怎样才能把它变大? 我有一个编译到9.5K的C++程序。我希望它超过1MB。我做了以下操作,将其填充到约18k,但要一直填充到1MB将非常困难_C++ - Fatal编程技术网

我的编译C++;程序太小了。我怎样才能把它变大? 我有一个编译到9.5K的C++程序。我希望它超过1MB。我做了以下操作,将其填充到约18k,但要一直填充到1MB将非常困难

我的编译C++;程序太小了。我怎样才能把它变大? 我有一个编译到9.5K的C++程序。我希望它超过1MB。我做了以下操作,将其填充到约18k,但要一直填充到1MB将非常困难,c++,C++,代码是不可访问的,但是由于编译器的优化,我不得不使它看起来是可访问的,因此bool发生了变化 #include "stdafx.h" #include <iostream> using namespace std; void main(int argc, char* argv[]) { bool a = false; cout << endl << "Passed parameters"; for (int i = 0 ; i <

代码是不可访问的,但是由于编译器的优化,我不得不使它看起来是可访问的,因此bool发生了变化

#include "stdafx.h"
#include <iostream>
using namespace std;

void main(int argc, char* argv[])
{
    bool a = false;
    cout << endl << "Passed parameters";
    for (int i = 0 ; i < argc ; i++)
    {
        if(i == 0)
        {
            cout << endl << "Run Path (Arg0): " << argv[i];
            a=true;
        }
        else
        {
            cout << endl << "Arg" << i << ": " << argv[i];
            if(a){a=false;}
        }
    }
    cout << endl << endl;
    system("pause");
    if (a){
    string pad1 = "padpadpadpadpadpadpadpadpadpadpadpadpadpadp1adpadpadpadpadpa";
    string pad2 = "dapdapdapdapdapdapdapdapd2apdapdapdapdapdapdapdapdapdapdapd";
    string pad3 = "dipdipdipdipdipdipdipdipdipdipd3ipdipdipdipdipdipdipdipdip";
    string pad4 = "dipdipdipdi4pdipdipdipdipdipdipdipdipdipdipdipdipdipdipdip";
    string pad5 = "dipdipdipd5ipdipdipdipdipdipdipdipdipdipdipdipdipdipdipdip";
    string pad6 = "dipdipdipd6ipdipdipdipdipdipdipdipdipdipdipdipdipdipdipdip";
    string pad7 = "dipdipdipd7i1pdipdipdipdipdipdipdipdipdipdipdipdipdipdipdip";
    string pad8 = "dipdipdip8dipdipdip1dipdipdipdipdipdipdipdipdipdipdipdipdip";
    string pad9 = "dipdipdipd9ipdipdipdipdip1dipdipdipdipdipdipdipdipdipdipdip";
    string pad10= "padpadpadpadpadpadpadpadpadpadp1adpadpadpadp1adpadpadpadpadpa";
    string pad11= "dapdapdapdapdapdapdapdapd2apdapdapdapdapdap1dapdapdapdapdapd";
    string pad12= "dipdipdipdipdipdipdipdipdipdipd3ipdipdipdipdipdipdip1dipdip";
    string pad13= "dipdipdipdi4pdipdipdipdipdipdipdipdipdipdipdipdipdi1pdipdip";
    string pad14= "dipdipdipd5ipdipdipdipdipdipdipdipdipd2ipdipdi1pdipdipdipdip";
    string pad15= "dipdipdipd6ipdipdipdip2dipdipdipdipdipdipdip1dipdipdipdipdip";
    string pad16= "dipdipdipd7ipdipdipdip2dipdipdipdipdip1dipdipdipdipdipdipdip";
    string pad17= "dipdipdip8dipdipdipdipdipdipd2ipdip1dipdipdipdipdipdipdipdip";
    string pad18= "dipdipdipd9ipdipdipdip1dipdipdipdipdipdi2pdipdipdipdipdipdip";
    string pad19= "padpadpadpadpadpadpadpadpadpadpad2padpadpadp1adpadpadpadpadpa";
    string pad20= "dapdapdapdapdapd2apdapdapd2apdapdapdapdapdapdapdapdapdapdapd";
    string pad21= "dipdipdipdipdipd2ipdipdi2pdipdipd3ipdipdipdipdipdipdipdipdip";
    string pad22= "dipdipdipdi4pdipdipdipd2ipdipdipdipdipdipdipdipdipdipdipdip";
    string pad23= "dipdipdipd5ipdip2dipdipdipdipdipdipdipdipdipdipdipdipdipdip";
    string pad24= "dipdipdipd6ipdipdipdi2pdipdipdipdipdipdipdipdipdipdipdipdip";
    string pad25= "dipdipdipd7i1pdipdipdipdipdipdip2dipdipdipdipdipdipdipdipdip";
    string pad26= "dipdipdip8dipdipdip1dipdipdip1dipdipdipdipdipdipdipdipdipdip";
    string pad27= "dipdipdipd9ipdipdipd1ipdip1dipdipdipdipdipdipdipdipdipdipdip";
    string pad28= "padpadpadpadpadpadpadpadp1adpadp1adpadpadpadp1adpadpadpadpadpa";
    string pad29= "dapdapdapdapdapdapdapdapd2apdapdapdapdapda1p1dapdapdapdapdapd";
    string pad30= "dipdipdipdipdipdipdipdipdipdipd3ipdipd1ipdipdipdipdip1dipdip";
    string pad31= "dipdipdipdi4pdipdipdipdipdipdipdi1pdipdipdipdipdipdi1pdipdip";
    string pad32= "dipdipdipd5ipdipdipdi1pdipdipdipdipdipdipdipdi1pdipdipdipdip";
    string pad33= "dipdipdipd6ipdipdipdip1dipdipdipdipdipdipdip1dipdipdipdipdip";
    string pad34= "dipdipdipd7ipdipdipdipdip1dipdipdipdip1dipdipdipdipdipdipdip";
    string pad35= "dipdipdip8dipdipdipdipdipdipdi1pdip1dipdipdipdipdipdipdipdip";
    string pad36= "dipdipdipd9ipdipdipdip1dipdipdipd1ipdipdipdipdipdipdipdipdip";}
    return;
}
#包括“stdafx.h”
#包括
使用名称空间std;
void main(int argc,char*argv[])
{
布尔a=假;

cout也许您可以创建一个1MB大小的文件,并将所有信息读入某个变量或数据结构中

或者你可以创建一些数据结构,然后在一个循环中,向其中写入一堆垃圾。请注意,这可能会使你的程序明显变慢

int main(){}
char lol[1024*1024] = { 1 };
请注意,char
lol[1024*1024];
是不够的,否则编译器只会告诉操作系统创建一个零填充区域。这样,程序中就会嵌入一个1MB的无意义区域堆。

尝试以下方法:

char waste[1024*1024] = {1};
至少在我的TDM-GCC(在Win7上)上,输出要大1MB;如果您编写

char waste[1024*1024] = {0};

将对其进行优化(产生27kB)。

有一个简单的解决方案:
您可以在.exe文件中添加一些数据文件。Windows会抱怨发布者未知,但在确认后执行程序不会出现问题。

您可以通过在编译时静态分配内存来增大可执行文件的底纹。例如,只需添加:

static char padding[1024 * 1024] = {1};


这将静态地分配存储,而不是在运行时分配存储,如果忽略数组中第一个内存插槽的初始化值,就会出现这种情况。换句话说,如果没有将编译时初始化为非零值,数组将存储在对象文件,因此链接器只存储一个选项卡,向操作系统运行时指示它需要在执行时为数组分配内存,而不是在对象文件的
.data
部分静态分配内存,这将反过来在可执行文件本身中为数组创建内存占用。

使用静态可执行文件(
-static
标志,用于
gcc
)并添加系统包含,直到超过1MB。我想你也可以在Windows上这样做,但我不在Windows中编程,所以我可能会出错,但这里有一个链接似乎描述了如何做到这一点:

你为什么要这样做?通常情况下,情况正好相反!你必须为microsoft工作!出于好奇:你到底为什么要编译程序ram要更大。此外,你有一个程序使用
编译到
9.5k
,而不积极尝试使其尽可能小?只需编辑文件并在最后添加垃圾,windows不会仔细检查日历…不。那是两个多星期前的事了。我想他说的是二进制it本身,而不是内存程序在运行时占用空间。我很确定这两个因素都不会影响编译后的EXE,只影响运行时使用的内存/cpu。不是一个,而是一个和多个零。不。如果在初始化中只给出一个元素,它将被复制到整个数组中。我去掉了上面示例中的所有填充代码,并添加了是。现在编译为9.12k:(然后必须由VC++编译器为您进行优化。很抱歉。很抱歉,这是完全错误的。剩余的元素将被初始化为零。这也可以使用VS10进行优化。有什么特殊原因需要启用优化吗?@Dustin如果优化了,您仍然可以写出您的初始值zer list-您可以为此编写一个程序;)@Dustin和/或尝试实际访问数组成员(可能在
main
中的循环中分配给所有成员)@Dustin:分配大数组,在循环中填充并打印,但不要让代码的分支在运行时实际执行。可能使用
volatile bool exec_wastefill=false
。如果我没有弄错的话(已经有一段时间了)你可以用C++代码ST/Mt/CODE静态地编译C++的STD库,这确实是一个比Anthales更好的答案,对安泰勒没有任何冒犯。