从品牌网站建设到网络营销策划,从策略到执行的一站式服务
C语言每一次函数调用,编译器都会为这个函数调用分配一段空间,这段空间用来存放该函数中的所有局部变量和调用其它函数时需要传递的参数的副本。
成都创新互联公司专业为企业提供夷陵网站建设、夷陵做网站、夷陵网站设计、夷陵网站制作等企业网站建设、网页设计与制作、夷陵企业网站模板建站服务,十余年夷陵做网站经验,不只是建网站,更提供有价值的思路和整体网络服务。
函数调用和返回控制是通过栈来实现的。在函数调用时,函数的参数和返回地址等信息被先压入栈中,再跳转到函数执行的入口地址。函数执行完后,再从栈中取出返回地址信息,跳回到原来的函数调用处继续执行。
再说的多一点,一个进程(运行的程序)可分为若干段:代码段、数据段、堆栈段等,其中函数所操作的空间(也就是局部变量的空间)就位于堆栈段,所谓函数分配内存大小,实际就是堆栈段指针的变化而已。
再说的多一点,一个进程(运行的程序)可分为若干段:代码段、数据段、堆栈段等,其中函数所操作的空间(也就是局部变量的空间)就位于堆栈段,所谓函数分配内存大小,实际就是堆栈段指针的变化而已。
函数的相对地址在编译链接的时候就已经分配好了,但是绝对地址是未知的。
基本上C程序的元素存储在内存的时候有3种分配策略:静态分配 如果一个变量声明为全局变量或者是函数的静态变量,这个变量的存储将使用静态分配方式。静态分配的内存一般会被编译器放在数据段或代码段来存储,具体取决于实现。
malloc函数:其作用是在内存的动态存储区中分配一个长度为size的连续空间。其参数是一个无符号整形数,返回值是一个指向所分配的连续存储域的起始地址的指针。
1、内存角度来看,函数的参数是要入栈的,栈区大小决定了参数的个数。
2、在程序运行时,一个函数占用一段连续的内存。当调用一个函数时,实际上是跳转到函数的入口地址,执行函数体的代码,完成后返回。函数指针指向一个函数的入口地址,也就是函数存储空间的首地址。
3、如果是在Windows环境运行,可以使用Windows的API函数GlobalMemoryStatusEx,返回的结构中dwTotalVirtual的值与最大值之间的差,就是当前进程所占用的内存空间大小。
成都网站建设公司地址:成都市青羊区太升南路288号锦天国际A座10层 建设咨询028-86922220
成都快上网科技有限公司-四川网站建设设计公司 | 蜀ICP备19037934号 Copyright 2020,ALL Rights Reserved cdkjz.cn | 成都网站建设 | © Copyright 2020版权所有.
专家团队为您提供成都网站建设,成都网站设计,成都品牌网站设计,成都营销型网站制作等服务,成都建网站就找快上网! | 成都网站建设哪家好? | 网站建设地图