#include "stdafx.h"
void test()
{
printf("Hello Word");
getchar();
}
void Fun()
{
int arr[5] = {1,2,3,4,5};
arr[6] = (int)test; //arr[6] = (int)test;
//0040110B mov dword ptr [ebp+4],offset @ILT+0(test) (00401005)
}
int main(int argc, char* argv[])
{
test();
return 0;
}
arr[6] 越界了,我们可以手动引导,EIP 下次执行的位置
多维数组
1、一维数组与多维数组在反汇编上没有区别.
int arr[3][4] = {
{1,2,3,4},
{5,6,7,8},
{9,7,6,5},
}
编译器如何分配空间:
int arr[3*4] = {1,2,3,4,5,6,7,8,9,7,6,5};
2、数量如果不够,其他的值会补零.
3、不允许超过维度的最大长度.
4、可以省略里面的{ }
5、可以省略第一维的值

1万+

被折叠的 条评论
为什么被折叠?



