C语言栈内存的分配

原创 2016年05月30日 21:12:10

由于函数栈内存分配顺序真是方向不同,容易出错,所以运行一下程序特意证明了一下。直接上程序,程序很简单。

#include<stdio.h>

int main(void)
{
    int a;
    int b;
    char buf[4];
    printf("&a:%p\n",&a);
    printf("&b:%p\n",&b);
    printf("buf的地址:%p\n",&buf[0]);
    printf("buf+1地址:%p\n",&buf[1]);
    printf("buf+2地址:%p\n",&buf[2]);
    printf("buf+3地址:%p\n",&buf[3]);
    printf("buf+4地址:%p\n",&buf[4]);//故意越界数组去访问。
    return 0;
}

&a:0018FF44
&b:0018FF40
buf的地址:0018FF3C
buf+1地址:0018FF3D
buf+2地址:0018FF3E
buf+3地址:0018FF3F
buf+4地址:0018FF40

总结:
内存分配

版权声明:本文为博主原创文章,未经博主允许不得转载。

Java中堆内存与栈内存分配浅析

  • 2011年11月02日 15:53
  • 7KB
  • 下载

Java中堆内存与栈内存分配浅析

  • 2013年11月04日 15:36
  • 31KB
  • 下载

C 语言栈内存无法向父函数传递地址问题 [李园7舍_404]

当一个程序执行时,需要用一定的内存空间用与存放程序执行中使用到的各种数据。按内存空间分配方式的不同,一个程序所使用的内存区域可以分为静态内存和动态内存。在程序开始运行时由系统分配的内存称为静态内存,在...

C/C++ 堆 栈内存分配

内存分配方面: 堆:操作系统有一个记录空闲内存地址的链表,当系统收到程序的申请时,会遍历该链表,寻找第一个空间大于所申请空间的堆结点,然后将该结点从空闲结点链表中删除,并将该结点的空间分配给程序...

C++栈内存分配剖析

Environment:gcc Code sec1: int main() { int a=3; int b=3; int c=3; double d=6.0; int f=4; printf("%d...

【动态分配栈内存】之alloca内幕

哎,下班回家就开始大扫除,一直到凌晨才搞定,真的累了。但是计划的是今天必须将本文写完,不写完睡不着觉。那就尽快切入正题吧!         我们经常使用malloc或者new等函数或操作符来动态分配...
  • masefee
  • masefee
  • 2011年09月30日 03:38
  • 27123

linux与windows栈内存分配区别

同样的一段代码#include int main(int argc, char **argv) { int i; int a[5]; for(i=0;i

【动态分配栈内存】之alloca内幕

http://blog.csdn.net/masefee/article/details/6835688  我们经常使用malloc或者new等函数或操作符来动态分配内存,这里的内存说的是堆...

C++中堆和栈内存分配

//ps绿色字体为自己理解加上的内容 一个由C/C++编译程序占用内存分为以下几个部分 1、栈区(stack)— 由编译器自动分配释放 ,存放函数参数值,局部变量值等。其操作方式类似于数据结构中栈。...

c++中堆、栈内存分配

一个由C/C++编译程序占用内存分为以下几个部分 1、栈区(stack)— 由编译器自动分配释放 ,存放函数参数值,局部变量值等。其 操作方式类似于数据结构中栈。 2、堆区(heap) — 一般...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C语言栈内存的分配
举报原因:
原因补充:

(最多只允许输入30个字)