首页 > 其他分享 >栈空间的机制

栈空间的机制

时间:2023-03-25 17:31:35浏览次数:32  
标签:puts print 内存 空间 机制 stack 指针

我们的栈空间,实际是内存分配的一个空间,当主函数执行完了定义的栈空间,内存会自动释放这个空间,也就是这个空间会【消失】,想要【再次执行】,会输出乱码。

#include <stdio.h>
//堆和栈的差异

char * print_stack()
{
    char c[100]="I am print_stack func";  //初始化一个数组字符指针
    char *p;    //定义一个字符指针
    p=c;  //把数组指针赋地址给指针p
    puts(p);  //然后输出p的指针地址的数组。
    return p; //把p的指地址,返回给主函数。
}

int main() {
    char *p;
    p=print_stack();
    puts(p);
    return 0;
}

首先:p=print_stack();//当我已经调用完了* print_stack的栈空间,内存会自动释放,这个空间也会消失。

然后:puts(p);  //当我们再次输出指针p指向的数组指针时,发现这个空间以消失,但栈空间的最后有个【return p】;他把p的指针地址返回了主函数。然后主函数执行puts(p);找到这个地址,发现栈空间已经消失了,所以最后我们会出现【乱码】。这也是栈空间的机制 。

栈空间的机制_主函数

注意:这也是栈空间和堆空间的差异。栈空间内存管理,内存自动的释放空间。而堆空间是我们【借】的空间,什么时候【还】是我们自己的事情。

如果遇到主函数多次调用一个空间,那么我们就应该选用【堆空间】。


标签:puts,print,内存,空间,机制,stack,指针
From: https://blog.51cto.com/u_16003115/6149587

相关文章

  • MyBatis机制介绍与原理
    插件简介什么是插件插件是一种软件组件,可以在另一个软件程序中添加功能或特性。插件通常被设计成可以随时添加或删除的,而不影响主程序的功能。插件可以扩展软件程序的功......
  • 操作系统(2.4.5)--管程机制
    1.管程的定义利用共享数据结构抽象地表示系统中的共享资源,而把对该共享数据结构实施的操作定义为一组过程进程对共享资源的申请、释放和其它操作,都是通过这组过程对共享数据......
  • oracle数据库表索引空间不够
    oracle数据库表索引空间不够步骤1:检查索引空间使用情况首先,需要检查数据库的索引空间使用情况,以确定是否存在空间不足的问题。可以使用以下SQL语句查询当前索引空间的使......
  • python监控linux环境磁盘空间,并通过钉钉通知
    #-*-coding:utf-8-*-importpsutilimporttimefromdingtalkchatbot.chatbotimportDingtalkChatbotfromdatetimeimportdatetimeimportosfromos.pathim......
  • JS基础 空间坐标
    阅读目录视口与文档视口与文档尺寸几何尺寸方法列表getComputedStylegetBoundingClientRectgetClientRects坐标点元素元素集合底层元素滚动控制方法列表文档滚动位置元素滚......
  • 包机制和JavaDoc
    包机制为了更好的组织类,用于区别类名的命名空间.包语句的语法格式为:packagepkg1[.pkg2[.pkge...]];一般利用公司域名倒置作为包名;com.baidu.wwwimport导......
  • T324159 卡空间的题目/电脑白吃 题解
    https://www.luogu.com.cn/problem/T324159题目大意:给定一个大小为\(n\)的数组,找到其中的多数元素。多数元素是指在数组中出现次数大于\(\lfloor\frac{n}{2}\rfloo......
  • 分页机制及映射过程
    分页机制和映射过程x86:CR3-PDT-PTT-offset10-10-12x86withPAE:CR3-PDPT-PDT-PTT-offset2-9-9-12EPT(x64):EPTP-PML4E-PDPTE-PDE-PTE-o......
  • R语言用贝叶斯层次模型进行空间数据分析|附代码数据
    阅读全文:http://tecdat.cn/?p=10932最近我们被客户要求撰写关于贝叶斯层次模型的研究报告,包括一些图形和统计输出。在本文中,我将重点介绍使用集成嵌套拉普拉斯近似方法......
  • 会话管理机制、SQL注入攻击
    会话管理机制会话管理概述绝大多数Web应用程序中,回话管理机制是一个基本的安全组件回话管理在应用程序执行登录功能时显得特别重要因为,它可以在用户通过请求提交他们的......