Phi*_*hil 16 c++ winapi executable crt
我想制作一个比它应该大得多的虚拟Win32 EXE文件.因此默认情况下,锅炉板Win32 EXE文件为80 KB.我想要一个5 MB的测试其他实用程序.
第一个想法是添加资源,但事实证明,在内存分配方面,嵌入式资源与5 MB代码不同.我想我可以引用一个大型库,最终得到一个巨大的EXE文件?如果没有,也许可以编写几千种类似的方法,如AddNum1,AddNum2等,等等?
任何简单的想法都非常感激.
Pet*_* G. 17
那么简单地定义一个大的静态char数组呢?
char const bigarray[5*1024*1024] = { 1 };
Run Code Online (Sandbox Code Playgroud)
另请参阅我在线程中的其他答案,我建议静态链接到大型库.如果您只是引用了足够的库代码,这肯定会引入实际代码.
编辑:添加了非零初始化,因为编译器/链接器以优化的方式处理仅包含零的数据.
编辑:添加了对我的其他答案的参考.
编辑:添加了const限定符,因此bigarray将被许多编译器放在代码中.
char big[5*1024*1024] = {1};
Run Code Online (Sandbox Code Playgroud)
您需要将其初始化为0以外的值,否则编译器/链接器可能会对其进行优化.
如果是要增加的文件大小,则将文本文件附加到所需大小的exe的末尾.
当客户抱怨小前辈时,我常常这样做.他们没有意识到小前辈和大前辈一样专业.实际上在某些语言中有一个bloat()命令来增加exes的大小,通常是在BASIC编译器中.
编辑:找到人们使用的一段代码的旧链接:http://www.purebasic.fr/english/viewtopic.php?f = 12&t = 38994
例如:https://softwareengineering.stackexchange.com/questions/2051/what-is-the-craziest-stupidest-silliest-thing-a-client-boss-asked-you-to-do/2698#2698
使用大量常量数据,例如显式字符串:
char *dummy_data[] = {
"blajkhsdlmf..(long script-generated random string)..",
"kjsdfgkhsdfgsdgklj..(etc...)...jldsjglkhsdghlsdhgjkh",
};
Run Code Online (Sandbox Code Playgroud)
与变量数据不同,常量数据通常与实际代码位于同一内存部分,尽管这可能取决于编译器或链接器。
编辑:我测试了以下内容,它可以在 Linux 上运行:
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int i, j;
puts("char *dummy_data[] = {");
for (i = 0; i < 5000; i++) {
fputs(" \"", stdout);
for (j = 0; j < 1000; j++) putchar('a' + rand() % 26);
puts("\",");
}
puts("};");
return 0;
}
Run Code Online (Sandbox Code Playgroud)
这段代码及其输出都可以干净地编译。
| 归档时间: |
|
| 查看次数: |
4494 次 |
| 最近记录: |