栈区

作者: 记事本的记事本 | 来源:发表于2019-08-12 14:00 被阅读0次

程序1

#include <stdio.h>
#include <windows.h>
#pragma warning (disable:4996)



//1.栈区的内存自动申请释放,不需要程序编写者管理 
int* test1(){
int a = 5;
return &a;
}

int test2(){
    //不需要关注值是多少,是因为局部变量a的内存已经被回收 
    int* b = test1();
    printf("%d",*b);
}

 
int main()
{
test2(); 
    
}


程序1对应的图


image.png

程序2


#include <stdio.h>
#include <windows.h>
#pragma warning (disable:4996)



//1.栈区的内存自动申请释放,不需要程序编写者管理 
char* test1(){
    char a[] ="helloword";

    return a;
}

int test2(){
    //不需要关注值是多少,是因为局部变量a的内存已经被回收 
    char* b = test1();
    printf("%s",b);
}

 
int main()
{
test2(); 
    
}


程序2对应的图


image.png

程序3


#include <stdio.h>
#include <windows.h>
#pragma warning (disable:4996)



//1.栈区的内存自动申请释放,不需要程序编写者管理 
char* test1(){

        //在这里和程序2不同 主要是 返回的是指针,指针指向的常量区...所以把常量区地址赋值使用 ,怎么也没事啊
    char *a ="helloword";

    return a;
}

int test2(){
    //不需要关注值是多少,是因为局部变量a的内存已经被回收 
    char* b = test1();
    printf("%s",b);
}

 
int main()
{
test2(); 
    
}


程序3的图


image.png

相关文章

  • OC的五大内存区域

    栈区(stack)堆区(heap)全局区/静态区(BSS段和数据段)常量区代码区(代码段) 1、栈区 栈区:又称堆...

  • 存储区域

    栈区、堆区、全局区、常量区、代码区 栈区 栈区由编译器自动分配和释放,存放函数参数值、局部变量。栈是系统数据结构,...

  • iOS 内存基础知识及堆区和栈区的区别

    iOS内存区域大致分为;栈区,堆区,全局区(静态区),文字常量区,程序代码区 栈区 栈区(stack)由编译器自动...

  • 线性表和队列

    首先,讨论的堆和栈指的是内存中的“堆区”和“栈区”。C语言的内存模型分为5个区:栈区、堆区、静态区、常量区、代码区...

  • iOS底层原理:内存五大区

    在iOS中,内存主要分为栈区、堆区、全局区、常量区、代码区五大区域。如下图所示 栈区(Stack) 定义 栈是系统...

  • C语言基础(3)内存分配malloc与free

    1、申请内存的区域 栈区、堆区、全局区、字符常量区、代码区 定义的变量数组等都是在栈区申请,栈区的内存由系统申请和...

  • iOS 内存五大区

    内存主要分为栈区、堆区、全局区、常量区、代码区五大区域。如下图所示 栈区(Stack) 定义栈是系统数据结构,其对...

  • 堆与栈 堆区和栈区的区别

    一、 栈和堆事数据结构中的叫法,栈区和堆区是进程的内存模型中的堆区和栈区 二 内存模型里堆区和栈区和数据结构没有关...

  • iOS内存五大区

    iOS内存主要分成栈区、堆区、全局区、常量区、代码区这五大区域。如下图所示: 栈(Stack) 栈是由高地址向低地...

  • IOS底层原理-内存五大区域

    介绍内存的五大区域:栈区,堆区,静态区,常量区,代码段 栈区 局部变量和方法实参 栈区特点: 存储空间有限 . i...

网友评论

      本文标题:栈区

      本文链接:https://www.haomeiwen.com/subject/zyfujctx.html