1 桟区(stack):由编译器自动分配和释放,存放函数的参数值,局部变量的值,其操作方式类似于数据结构中的栈。
若申请的内存小于系统所剩内存则成功,否则就会发生栈溢出错误。
栈的增长方向是向下的,通常栈的初始化指针指向内存的最高地址,它是连续的。系统自动分配,因此速度很快。
在函数调用时,第一个进栈的是主函数的下一条指令的地址,然后是各个函数的参数,参数从右向左进栈...
分类:
其他好文 时间:
2014-07-28 16:19:33
阅读次数:
238
在C和C++中不能返回一个局部变量,因为函数中的局部变量分配的存储空间在栈上,当函数执行完后会被重新利用,所以想要返回数组类型,有两种方式:1)静态变量(static in a function可以在函数调用之间保持值有效),2)利用malloc动态分配,但是最终要记得释放。下面是几个简单测试程序:
1.错误的示例:
#include
int *func(int n){...
分类:
编程语言 时间:
2014-07-28 15:49:23
阅读次数:
263
学习目标: 掌握多参数、单返回值的数学函数的定义和使用方法 学会用typedef定义结构体 学会用assert宏帮助调试 理解函数调用时用实参给形参赋值的过程 学会定义局部变量和全局变量 理解调用栈和栈帧,学会用gdb查看调用栈并选择栈帧 理解地址和指针 理解递归定义和递归函数 理解可执行文件中的正...
分类:
其他好文 时间:
2014-07-28 14:28:33
阅读次数:
240
//数组作为参数时,函数调用传入数组名即可#import"Function.h"intvar=10;//全局变量,在所有函数中都可以访问.程序运行期间空间不回收.//变量xy是在函数内部定义的变量,只能在函数内部有效,在函数之外,就无法访问,所以叫做局部变量,(当函数调用时,为变量开辟空间,当函数结束之后..
分类:
其他好文 时间:
2014-07-28 00:32:20
阅读次数:
220
函数对于一种编程语言,就像细胞对于人一样重要。一个重要的问题是--在高级语言中的函数在底层机器语言上又是怎么实现的?(当然不同的处理器可能会有多种实现方式)在这篇文章中尝试着整理了一下在x86下函数这个概念在机器上的实现过程。主要包括传参,创建局部变量,函数调用等。(英版)...
分类:
其他好文 时间:
2014-07-28 00:05:19
阅读次数:
502
Lua可作为扩展性语言(Lua可以作为程序库用来扩展应用的功能),同时也是个可扩展的语言(Lua程序中可以注册由其他语言实现的函数)。 C和Lua交互的部分称为C API。C API是一个C代码与Lua进行交互的函数集。他由以下部分组成:读写Lua全局变量的函数、调用Lua函数的函数、运行Lu...
分类:
编程语言 时间:
2014-07-27 23:19:39
阅读次数:
297
注:在linux下开发经常使用的辅助小工具:readelf 、hexdump、od、objdump、nm、telnet、nc 等,详细能够man一下。我们用以下的C代码来研究函数调用的过程。C++ Code12345678910111213141516intbar(intc,intd){inte=c...
分类:
系统相关 时间:
2014-07-27 23:05:29
阅读次数:
471
情景:程序加载dll,dll中的函数调用另一个dll中的导出函数.stringgetName(){stringname="";regmatch(text,&name);returnname;}do{stringm_name=getName();}while(0);当m_name析构的时候,发生异常分析其中的原因,应该是name的内存不够,为了保存name的结果,在regmatch函..
分类:
其他好文 时间:
2014-07-27 14:20:56
阅读次数:
218
情景:程序加载dll,dll中的函数调用另一个dll中的导出函数.stringgetName(){stringname="";regmatch(text,&name);returnname;}do{stringm_name=getName();}while(0);当m_name析构的时候,发生异常分析其中的原因,应该是name的内存不够,为了保存name的结果,在regmatch函..
分类:
其他好文 时间:
2014-07-27 14:20:49
阅读次数:
276
高级语言翻译成机器码后,计算机没有办法知道函数调用的参数个数、类型,也没有硬件可以保护这些参数。另外,在C++中,因为重载的原因,所以对函数的命名方式和普通C语言并不一致,该方式称为名字改编。函数调用者与函数之间,尤其是跨语言调用接口时,需要一个协议约定来传递参数——栈。关键流程:调用时,调用者依次...
分类:
其他好文 时间:
2014-07-26 05:44:17
阅读次数:
286