历史上的今天
今天是:2025年02月02日(星期日)
2021年02月02日 | STM32学习笔记-STM32堆栈区(一)
2021-02-02 来源:eefocus
一个由C/C++编译的程序占用的内存分为以下几个部分:
栈区(stack):编译器自动分配释放,存放函数的参数值,局部变量的值等。操作方式类似于数据结构中的栈。
堆区(heap):一般由程序员分配释放,
若程序员不释放,程序结束时可能由OS回收。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表。
全局区(静态区)(static):全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域,未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。程序结束后由系统释放。
文字常量区 —常量字符串就是放在这里的。 程序结束后由系统释放
程序代码区—存放函数体的二进制代码
编译后,各个区存储内容举例说明如下:
//main.cpp
int a = 0; //全局初始化区
char *p1; //全局未初始化区
int main()
{
int b; //栈
char s[] = “abc”; //栈
char *p2; //栈
char *p3 = “123456”;// 123456 在常量区,p3在栈上
static int c =0; //全局(静态)初始化区
p1 = (char *)malloc(10);
p2 = (char *)malloc(20);
//分配得来得10和20字节的区域就在堆区。
strcpy(p1, "123456"); //123456 放在常量区,编译器可能会将它与p3所指向的"123456" 优化成一个地方。
}
史海拾趣
|
小弟初学单片机 在学习51的串行通信的时候遇到下面几个问题不明白,希望大家帮助,谢谢~! (硬件平台:伟纳ME300B开发板 ) 1 为何在复位状态下 数码管显示的数字是(如图2)这个 ;我在主程序中给P2口位选端赋值是0xff;为何上电会有显示?(我 ...… 查看全部问答> |
|
Error: Feature Compiler is not available with your current license, or license does not exist每次运行都出现这样的错误,是怎么回事?急……… 查看全部问答> |
|
我在IAR V5.3下建了一个项目A,放在目录PA下,做了一段时间,基本完成了;这时候又来了一个开发任务,这个任务跟项目A较相似,于是我建了一个目录PB,把项目A拷贝到了目录PB下,然后打开这个项目在IAR下修改。本 ...… 查看全部问答> |
|
uint16 moniliangruanjianjizhun(uint16 a,uint16 b) //模拟量软件基准计算 { unsigned long int c,d; if(a>=b) a=0xffff; else { //_asm("sim"); //禁止中断后计算正常 c=a; d=c<<16; d-=c; //==d ...… 查看全部问答> |
|
[local]1[用24L01做无线传输的实验,但是在发射的时候,总是无法正常的发送, TX_Sta=SPI_Read(STATUS); 读过来的TX_Sta总是为0;源码我发上了,大家帮我看看 … 查看全部问答> |
|
一个在linux2.6.26下关于加入devfs的奇怪问题。 本人在linux2.6.26下想加入devfs。在fs/Kconfig里更改了编译选项,即定义了CONFIG_DEVFS_FS,但是在编译内核的时候,出现错误: driver/built-in.o:In function \'at91_spidev_init\'; hid-debug.c:undefined reference&nb ...… 查看全部问答> |




