你能malloc到多少内存

用malloc函数测测你的电脑可以申请多少内存

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include<stdio.h>
#include<stdlib.h>

int main(void)
{
void *p;
int cnt = 0;
while (p=malloc(100*1024*1024)){
cnt++;
}
printf("分配了%d00MB的空间\n",cnt);

return 0;
}

本机运行得到12G多

在DeBian虚拟机里只有3G

a little virus

1
2
3
4
5
6
7
8
#include<stdio.h>
int main()
{
int i;
while(1)
{printf("%d\n",i);
i++;}
}

惊心动魄的拆弹游戏

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#include<iostream>
using namespace std;
#include<time.h>
#include<stdlib.h>
#include<conio.h>
#include<windows.h>
int main()
{
int n,c;n=clock();
srand((unsigned)time(NULL));
int r,p;r=rand()%3+1;
while(c-n<10000)
{
c=clock();
system("cls");
cout<<"1:----------------------------------\n";
cout<<"2:----------------------------------\n";
cout<<"3:----------------------------------\n";
cout<<"this is a timeboom\nwhich rope to cut\n";
cout<<(10000-(c-n))/100<<endl;
if(p=kbhit())
{
if(p==r)
{
cout<<"thank god you survived!\n";
exit(0);
}
else break;
}
}
cout<<"BOOM!!!\nhahahahaha you lose \nyou're dead!";
while(1)
{
system("color 4F");
Sleep(10);
system("color 8E");
}
}

逗比故事生成器

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
#include<iostream>
using namespace std;
#include<time.h>
#include <stdlib.h>
int main()
{
srand((unsigned)time(NULL));
char character1[21],character2[21],character3[21];int n,v1,v2,adj1,adj2,res;
label_1:
cout<<"几人故事 1/2/3 :";cin>>n;cin.ignore();
switch(n)
{
case 3:cout<<"主人公3:";cin.getline(character3,21);
case 2:cout<<"主人公2:";cin.getline(character2,21);
case 1:cout<<"主人公1:";cin.getline(character1,21);break;
default:cout<<"输入错误\n";goto label_1;
}
if(n==2) goto label_2;
else if(n==3) goto label_3;
adj1=rand()%10+1;res=rand()%5+1;
switch(adj1)
{
case 1:cout<<"愤怒的";break;
case 2:cout<<"高冷的";break;
case 3:cout<<"生无可恋的";break;
case 4:cout<<"烂醉的";break;
case 5:cout<<"发情的";break;
case 6:cout<<"痴呆的";break;
case 7:cout<<"天真的";break;
case 8:cout<<"五味杂陈的";break;
case 9:cout<<"富得流油的";break;
case 10:cout<<"聪明绝顶的"; break;
}
cout<<character1;v1=rand()%7+1;
switch(v1)
{
case 1:cout<<"持刀表白";break;
case 2:cout<<"在公共场合开车";break;
case 3:cout<<"去抢银行";break;
case 4:cout<<"玩农药开黑";break;
case 5:cout<<"在宿舍裸奔";break;
case 6:cout<<"回老家放炮";break;
case 7:cout<<"放了一分钟的响屁";break;
}
cout<<"结果";
switch(res)
{
case 1:cout<<"半路掉沟";break;
case 2:cout<<"被FBI逮捕";break;
case 3:cout<<"遇见了外星人";break;
case 4:cout<<"笑死了";break;
case 5:cout<<"获得了超能力";break;
}
cout<<endl;
system("pause");goto label_1;
label_2:
v1=rand()%5+1;v2=rand()%7+1;res=rand()%5+1;
adj1=rand()%10+1;
cout<<character1;
switch(v1)
{
case 1:cout<<"眼睁睁地看见";break;
case 2:cout<<"偷听到";break;
case 3:cout<<"夜里梦见";break;
case 4:cout<<"听妈妈说";break;
case 5:cout<<"胡思乱想着"; break;
}
switch(adj1)
{
case 1:cout<<"愤怒的";break;
case 2:cout<<"高冷的";break;
case 3:cout<<"生无可恋的";break;
case 4:cout<<"烂醉的";break;
case 5:cout<<"发情的";break;
case 6:cout<<"痴呆的";break;
case 7:cout<<"天真的";break;
case 8:cout<<"五味杂陈的";break;
case 9:cout<<"富得流油的";break;
case 10:cout<<"聪明绝顶的"; break;
}
cout<<character2;
switch(v2)
{
case 1:cout<<"持刀表白";break;
case 2:cout<<"在公共场合开车";break;
case 3:cout<<"去抢银行";break;
case 4:cout<<"玩农药开黑";break;
case 5:cout<<"在宿舍裸奔";break;
case 6:cout<<"回老家放炮";break;
case 7:cout<<"放了一分钟的响屁";break;
}
cout<<"结果";
switch(res)
{
case 1:cout<<"半路掉沟";break;
case 2:cout<<"被FBI逮捕";break;
case 3:cout<<"遇见了外星人";break;
case 4:cout<<"笑死了";break;
case 5:cout<<"获得了超能力";break;
}
cout<<endl;
system("pause");goto label_1;
label_3:
v1=rand()%5+1;v2=rand()%7+1;res=rand()%5+1;
adj1=rand()%10+1;adj2=rand()%10+1;
cout<<character1;
switch(v1)
{
case 1:cout<<"眼睁睁地看见";break;
case 2:cout<<"偷听到";break;
case 3:cout<<"夜里梦见";break;
case 4:cout<<"听妈妈说";break;
case 5:cout<<"胡思乱想着"; break;
}
switch(adj1)
{
case 1:cout<<"愤怒的";break;
case 2:cout<<"高冷的";break;
case 3:cout<<"生无可恋的";break;
case 4:cout<<"烂醉的";break;
case 5:cout<<"发情的";break;
case 6:cout<<"痴呆的";break;
case 7:cout<<"天真的";break;
case 8:cout<<"五味杂陈的";break;
case 9:cout<<"富得流油的";break;
case 10:cout<<"聪明绝顶的"; break;
}
cout<<character2<<"和";
switch(adj2)
{
case 1:cout<<"愤怒的";break;
case 2:cout<<"高冷的";break;
case 3:cout<<"生无可恋的";break;
case 4:cout<<"烂醉的";break;
case 5:cout<<"发情的";break;
case 6:cout<<"痴呆的";break;
case 7:cout<<"天真的";break;
case 8:cout<<"五味杂陈的";break;
case 9:cout<<"富得流油的";break;
case 10:cout<<"聪明绝顶的"; break;
}
cout<<character3;
switch(v2)
{
case 1:cout<<"持刀表白";break;
case 2:cout<<"在公共场合开车";break;
case 3:cout<<"去抢银行";break;
case 4:cout<<"玩农药开黑";break;
case 5:cout<<"在宿舍裸奔";break;
case 6:cout<<"回老家放炮";break;
case 7:cout<<"放了一分钟的响屁";break;
}
cout<<"结果";
switch(res)
{
case 1:cout<<"半路掉沟";break;
case 2:cout<<"被FBI逮捕";break;
case 3:cout<<"遇见了外星人";break;
case 4:cout<<"笑死了";break;
case 5:cout<<"获得了超能力";break;
}
cout<<endl;
system("pause");
goto label_1;
}

文件加密(生成MD5)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
#include   <stdio.h>  
#include <stdlib.h>
#include <time.h>
#include <string.h>

#define F(x, y, z) (((x) & (y)) | ((~x) & (z)))
#define G(x, y, z) (((x) & (z)) | ((y) & (~z)))
#define H(x, y, z) ((x) ^ (y) ^ (z))
#define I(x, y, z) ((y) ^ ((x) | (~z)))

#define RL(x, y) (((x) << (y)) | ((x) >> (32 - (y)))) //x向左循环移y位

#define PP(x) (x<<24)|((x<<8)&0xff0000)|((x>>8)&0xff00)|(x>>24) //将x高低位互换,例如PP(aabbccdd)=ddccbbaa

#define FF(a, b, c, d, x, s, ac) a = b + (RL((a + F(b,c,d) + x + ac),s))
#define GG(a, b, c, d, x, s, ac) a = b + (RL((a + G(b,c,d) + x + ac),s))
#define HH(a, b, c, d, x, s, ac) a = b + (RL((a + H(b,c,d) + x + ac),s))
#define II(a, b, c, d, x, s, ac) a = b + (RL((a + I(b,c,d) + x + ac),s))

unsigned A,B,C,D,a,b,c,d,i,len,flen[2],x[16]; //i临时变量,len文件长,flen[2]为64位二进制表示的文件初始长度
char filename[200]; //文件名
FILE *fp;

void md5() //MD5核心算法,供64轮
{

a=A,b=B,c=C,d=D;
/**//* Round 1 */
FF (a, b, c, d, x[ 0], 7, 0xd76aa478); /**//* 1 */
FF (d, a, b, c, x[ 1], 12, 0xe8c7b756); /**//* 2 */
FF (c, d, a, b, x[ 2], 17, 0x242070db); /**//* 3 */
FF (b, c, d, a, x[ 3], 22, 0xc1bdceee); /**//* 4 */
FF (a, b, c, d, x[ 4], 7, 0xf57c0faf); /**//* 5 */
FF (d, a, b, c, x[ 5], 12, 0x4787c62a); /**//* 6 */
FF (c, d, a, b, x[ 6], 17, 0xa8304613); /**//* 7 */
FF (b, c, d, a, x[ 7], 22, 0xfd469501); /**//* 8 */
FF (a, b, c, d, x[ 8], 7, 0x698098d8); /**//* 9 */
FF (d, a, b, c, x[ 9], 12, 0x8b44f7af); /**//* 10 */
FF (c, d, a, b, x[10], 17, 0xffff5bb1); /**//* 11 */
FF (b, c, d, a, x[11], 22, 0x895cd7be); /**//* 12 */
FF (a, b, c, d, x[12], 7, 0x6b901122); /**//* 13 */
FF (d, a, b, c, x[13], 12, 0xfd987193); /**//* 14 */
FF (c, d, a, b, x[14], 17, 0xa679438e); /**//* 15 */
FF (b, c, d, a, x[15], 22, 0x49b40821); /**//* 16 */

/**//* Round 2 */
GG (a, b, c, d, x[ 1], 5, 0xf61e2562); /**//* 17 */
GG (d, a, b, c, x[ 6], 9, 0xc040b340); /**//* 18 */
GG (c, d, a, b, x[11], 14, 0x265e5a51); /**//* 19 */
GG (b, c, d, a, x[ 0], 20, 0xe9b6c7aa); /**//* 20 */
GG (a, b, c, d, x[ 5], 5, 0xd62f105d); /**//* 21 */
GG (d, a, b, c, x[10], 9, 0x02441453); /**//* 22 */
GG (c, d, a, b, x[15], 14, 0xd8a1e681); /**//* 23 */
GG (b, c, d, a, x[ 4], 20, 0xe7d3fbc8); /**//* 24 */
GG (a, b, c, d, x[ 9], 5, 0x21e1cde6); /**//* 25 */
GG (d, a, b, c, x[14], 9, 0xc33707d6); /**//* 26 */
GG (c, d, a, b, x[ 3], 14, 0xf4d50d87); /**//* 27 */
GG (b, c, d, a, x[ 8], 20, 0x455a14ed); /**//* 28 */
GG (a, b, c, d, x[13], 5, 0xa9e3e905); /**//* 29 */
GG (d, a, b, c, x[ 2], 9, 0xfcefa3f8); /**//* 30 */
GG (c, d, a, b, x[ 7], 14, 0x676f02d9); /**//* 31 */
GG (b, c, d, a, x[12], 20, 0x8d2a4c8a); /**//* 32 */

/**//* Round 3 */
HH (a, b, c, d, x[ 5], 4, 0xfffa3942); /**//* 33 */
HH (d, a, b, c, x[ 8], 11, 0x8771f681); /**//* 34 */
HH (c, d, a, b, x[11], 16, 0x6d9d6122); /**//* 35 */
HH (b, c, d, a, x[14], 23, 0xfde5380c); /**//* 36 */
HH (a, b, c, d, x[ 1], 4, 0xa4beea44); /**//* 37 */
HH (d, a, b, c, x[ 4], 11, 0x4bdecfa9); /**//* 38 */
HH (c, d, a, b, x[ 7], 16, 0xf6bb4b60); /**//* 39 */
HH (b, c, d, a, x[10], 23, 0xbebfbc70); /**//* 40 */
HH (a, b, c, d, x[13], 4, 0x289b7ec6); /**//* 41 */
HH (d, a, b, c, x[ 0], 11, 0xeaa127fa); /**//* 42 */
HH (c, d, a, b, x[ 3], 16, 0xd4ef3085); /**//* 43 */
HH (b, c, d, a, x[ 6], 23, 0x04881d05); /**//* 44 */
HH (a, b, c, d, x[ 9], 4, 0xd9d4d039); /**//* 45 */
HH (d, a, b, c, x[12], 11, 0xe6db99e5); /**//* 46 */
HH (c, d, a, b, x[15], 16, 0x1fa27cf8); /**//* 47 */
HH (b, c, d, a, x[ 2], 23, 0xc4ac5665); /**//* 48 */

/**//* Round 4 */
II (a, b, c, d, x[ 0], 6, 0xf4292244); /**//* 49 */
II (d, a, b, c, x[ 7], 10, 0x432aff97); /**//* 50 */
II (c, d, a, b, x[14], 15, 0xab9423a7); /**//* 51 */
II (b, c, d, a, x[ 5], 21, 0xfc93a039); /**//* 52 */
II (a, b, c, d, x[12], 6, 0x655b59c3); /**//* 53 */
II (d, a, b, c, x[ 3], 10, 0x8f0ccc92); /**//* 54 */
II (c, d, a, b, x[10], 15, 0xffeff47d); /**//* 55 */
II (b, c, d, a, x[ 1], 21, 0x85845dd1); /**//* 56 */
II (a, b, c, d, x[ 8], 6, 0x6fa87e4f); /**//* 57 */
II (d, a, b, c, x[15], 10, 0xfe2ce6e0); /**//* 58 */
II (c, d, a, b, x[ 6], 15, 0xa3014314); /**//* 59 */
II (b, c, d, a, x[13], 21, 0x4e0811a1); /**//* 60 */
II (a, b, c, d, x[ 4], 6, 0xf7537e82); /**//* 61 */
II (d, a, b, c, x[11], 10, 0xbd3af235); /**//* 62 */
II (c, d, a, b, x[ 2], 15, 0x2ad7d2bb); /**//* 63 */
II (b, c, d, a, x[ 9], 21, 0xeb86d391); /**//* 64 */

A += a;
B += b;
C += c;
D += d;

}

main()
{
while(1)
{
printf("Input file:");
gets(filename); //用get函数,避免scanf以空格分割数据,
if (filename[0]==34) filename[strlen(filename)-1]=0,strcpy(filename,filename+1); //支持文件拖曳,但会多出双引号,这里是处理多余的双引号
if (!strcmp(filename,"exit")) exit(0); //输入exit退出
if (!(fp=fopen(filename,"rb")))
{
printf("Can not open this file!\n"); //以二进制打开文件
continue;
}
fseek(fp, 0, SEEK_END); //文件指针转到文件末尾
if((len=ftell(fp))==-1)
{
printf("Sorry! Can not calculate files which larger than 2 GB!\n"); //ftell函数返回long,最大为2GB,超出返回-1
fclose(fp);
continue;
}
rewind(fp); //文件指针复位到文件头
A=0x67452301,B=0xefcdab89,C=0x98badcfe,D=0x10325476; //初始化链接变量
flen[1]=len/0x20000000; //flen单位是bit
flen[0]=(len%0x20000000)*8;
memset(x,0,64); //初始化x数组为0
fread(&x,4,16,fp); //以4字节为一组,读取16组数据
for(i=0; i<len/64; i++) //循环运算直至文件结束
{
md5();
memset(x,0,64);
fread(&x,4,16,fp);
}
((char*)x)[len%64]=128; //文件结束补1,补0操作,128二进制即10000000
if(len%64>55) md5(),memset(x,0,64);
memcpy(x+14,flen,8); //文件末尾加入原文件的bit长度
md5();
fclose(fp);
printf("MD5 Code:%08x%08x%08x%08x\n",PP(A),PP(B),PP(C),PP(D)); //高低位逆反输出
}
}

×

纯属好玩

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

文章目录
  1. 1. 用malloc函数测测你的电脑可以申请多少内存
  2. 2. a little virus
  3. 3. 惊心动魄的拆弹游戏
  4. 4. 逗比故事生成器
  5. 5. 文件加密(生成MD5)