69,371
社区成员
发帖
与我相关
我的任务
分享
#include <stdio.h>
int main()
{
int *b, k, i, j, h;
int a, *g, *l;
char *f;
struct hup{
int n;
int m;
}hup;
b = &i;
for (i=0; i<7; i++) {
if (i == 6)
*(&hup.m+((&l-&g)&0x1+2)) = 1;
else
printf("oh! my god!");
}
return 0;
}
b = &i;
#include <stdio.h>
int main()
{
int *b,k,i,j,h;
int a,*g,*l;
char *f;
struct hup
{
int n;
int m;
}hup;
b=&i;
for (i=0; i<7; i++)
{
if (i == 6)
{
*(&hup.m+((&l-&g)&0x1+2)) = 1;
}
else
{
printf("oh! my god!\n");
}
}
system("pause");
return 0;
}
//*仅为方便代表对象是个指针,这儿无其他含义
//此布局为上面环境下本程序的真实堆栈描述
n
m
*l
*g
i
*b
k
j
h
a
*f
//我感觉的堆栈分布是
//低地址在上,高地址在下
n
m
f
l
g
a
h
j
i
k
b
*(&hup.m+((&l-&g)&0x1+2)) = 1;