0604-研究试验3
学习过程
(1)
(2)
main()
{
*(char far *)0x0b80009B0 = 0x61;
*(char far *)0x0b80009B1 = 0x2;
}
(3)
(4)
书上的代码转换为的汇编
(5)
解决的问题
(2)
(3)
- 全局变量放在内存中
- 局部变量放在栈中
- 每个函数开头的
push bp mov bp sp
就是为了在函数中正确的使用局部变量- main程序开始
- main程序结束
(4)
-
返回值存放在 ax 中
//由于书上的代码返回值为0,不好对比。故将 a b 赋值为 1 int f(void); int a, b, ab; main() { int c; c = f(); } int f(void) { a = b = 1;//返回值为2 ab = a + b; return ab; }
(5)
void *malloc(long NumBytes)
:该函数分配了NumBytes
个字节,并返回了指向这块内存的指针。如果分配失败,则返回一个空指针(NULL)。
void free(void *FirstByte)
: 该函数是将之前用malloc分配的空间还给程序或者是操作系统,也就是释放了这块内存,让它重新得到自由。
研究体会
本次实验较前两实验略显复杂,需要大量编译链接分析工作,通过本次实验,认识的C语言分配内存的机制
数是将之前用malloc分配的空间还给程序或者是操作系统,也就是释放了这块内存,让它重新得到自由。
研究体会
本次实验较前两实验略显复杂,需要大量编译链接分析工作,通过本次实验,认识的C语言分配内存的机制