程序下载到单片机中的内存分配问题

1、函数分配到Flash中的代码段

2、已初始化的全局变量:
   uint8_t G_Initialized_Variable = 10;
     G_Initialized_Variable存在SRAMA当中的已初始化段(.data),10存放在Flash当中的只读段(.rodata)

3、未初始化的全局变量:
     uint8_t G_Uninitialized_Variable = 0;
     G_Uninitialized_Variable存在SRAMA当中的未初始化段(.bss)

4、局部变量只有在运行的时候才在栈里分配空间,运行结束自动释放分配的内存

原文地址:https://www.cnblogs.com/muzhishan/p/10640926.html

时间: 2024-10-13 22:27:31

程序下载到单片机中的内存分配问题的相关文章

将程序下载到单片机

起首,我们要把硬件衔接好,把板子插到我们的电脑上,翻开装备治理器检查所运用的是哪个 COM 口,如图 2-21 所示,找到"USB-SERIAL CH340(COM5)"这一项,这里最初的数字就是开辟板今朝所运用的 COM 端标语. 图 2-21  检查COM口 然后 STC 系列单片的下载软件--STC-ISP,如图 2-22 所示. 图2-22  程序下载设置 下载软件列出了 5 个步调:第一步,选择单片机型号,我们如今用的单片机型号是STC89C52RC,这个必定不克不及选错了:

C语法中的内存分配

关于c中的内存分配问题,这个问题怎么说好呢,我感觉还是和内存四区挂上了钩,在主调函数中栈区上分配的内存空间是可以在被调函数使用的: 例: #include <stdio.h> #include <string.h> #include <stdlib.h> char *distribution(char *a) { char b[64];//被调函数中在栈区上分配一个64字节的一维数组 printf("%s\n",a);//打印字符串为 aaabbb

Java中的内存分配机制

Java的内存分为两种:一种是栈内存,一种是堆内存. 在函数中定义的一些基本类型变量和对象的引用都在函数的栈内存中分配.当在一个代码块中定义一个变量的时候,java就在栈中为其分配内存,当超过作用域的时候内存自动释放. 对内存用来存放new创建的对象和数组.在堆中分配的内存,由java虚拟机的垃圾回收机器管理.java的堆是运行时数据区,堆的优势是可以动态的分配内存大小,生存周期也不必事先告诉编译器,但是,由于是动态分配,存取速度慢. 栈的优势是比堆的存取速度快,仅次于寄存器,栈数据可以共享,但

单片机入门指南系列(十五) 单片机程序下载失败总结

前面介绍了点亮第一个LED的全过程,很多人可能很幸运的点亮了LED,然而也很可能不少人非常不幸没有把程序下载进去.初学者常会遇到程序无法下载的情况,很多人在尝试多次未果后比较受打击,因此放弃了学习,实在太可惜了.鉴于此,这里列举了单片机程序下载失败的各种出错原因.判断方法和解决方法,是前人所遇到的种种原因的总结. STC单片机下载程序主要分为三部分:单片机最小系统.下载电路.计算机端.下载失败一般主要就从这三个方面来解决问题. 快速排错方法 如果你有或者能向别人借到一套可以正常下载程序的电脑.单

单片机入门指南系列(十) 单片机程序下载相关知识

原文发表自我的个人主页,欢迎大家访问 http://purplesword.info/mcu-primer-10 注:本篇在写<单片机入门指南系列>之前就已经写过,现在发现这篇比较合理的位置,应该是放在<单片机入门指南系列(六) 单片机最小系统--麻雀虽小,五脏俱全>之后的,但是由于之前考虑不周,所以只好放在这里了,也就不重新修改文章的位置了. 作为基础知识补充,本篇详细介绍了串口.51单片机的ISP下载等知识,虽然这些知识并不一定要很了解也能学习单片机,但是有一些概念有时对解决问

单片机中C语言的程序与数据存储

单片机中C语言的程序与数据存储 一.五大内存分区: 内存分成5个区,它们分别是堆.栈.自由存储区.全局/静态存储区和常量存储区. 1.栈区(stack):FIFO就是那些由编译器在需要的时候分配,在不需要的时候自动清除的变量的存储区.里面的变量通常是局部变量.函数参数等. 2.堆区(heap):就是那些由new分配的内存块,它们的释放编译器不去管,由我们的应用程序去控制,一般一个new就要对应一个delete.如果程序员没有释放掉,那么在程序结束后,操作系统会自动回收. 3.自由存储区:就是那些

黑马程序员--Objective-C之--OC中的内存管理

对于面向对象的变成语言,程序需要不断地创建对象. 初始,创建的所有程序通常都有指针指向它,程序可能需要访问这些对象的实例变量或调用这些对象的方法,随着程序的不断执行,程序再次创建了一些新的对象, 而那些老的对象已经不会再被调用,也不再有指针指向他们,如果程序没有回收他们占用的内存,就会出现内存泄露. 如果程序一直泄露内存,那么可用内存就会越来越少,直到没有足够的内存,程序將会崩溃.目前,主要有两种管理内存的技术,一是引用计数,二是垃圾回收. iOS平台目前只支持引用计数,Mac平台支持垃圾回收.

linux下,一个运行中的程序,究竟占用了多少内存

1. 在linux下,查看一个运行中的程序, 占用了多少内存, 一般的命令有 (1). ps aux: 其中  VSZ(或VSS)列 表示,程序占用了多少虚拟内存. RSS列 表示, 程序占用了多少物理内存. 虚拟内存可以不用考虑,它并不占用实际物理内存. (2). top 命令也可以 其中  VIRT(或VSS)列  表示,程序占用了多少虚拟内存. 同 ps aux 中的 VSZ列 RES列 表示, 程序占用了多少物理内存.同 ps aux 中的RSS列 2.在linux下, 查看当前系统占用

了解 JavaScript 应用程序中的内存泄漏

简介 当处理 JavaScript 这样的脚本语言时,很容易忘记每个对象.类.字符串.数字和方法都需要分配和保留内存.语言和运行时的垃圾回收器隐藏了内存分配和释放的具体细节. 许多功能无需考虑内存管理即可实现,但却忽略了它可能在程序中带来重大的问题.不当清理的对象可能会存在比预期要长得多的时间.这些对象继续响应事件和消耗资源.它们可强制浏览器从一个虚拟磁盘驱动器分配内存页,这显著影响了计算机的速度(在极端的情形中,会导致浏览器崩溃). 内存泄漏指任何对象在您不再拥有或需要它之后仍然存在.在最近几