今天看啥  ›  专栏  ›  嵌入式微处理器

C语言数组在内存中是怎样表示的?

嵌入式微处理器  · 公众号  ·  · 2024-06-07 14:00
    

文章预览

最近群里有位同学问“C语言中数组在内存中是怎样表示的”,今天我们就来聊一聊这个话题。 开局一张图: 如上图所示,这是经典的Linux进程内存布局,通常我们使用的数据存在这样几个地方: 栈区,Stack 全局区,Global 堆区,Heap 接下来,我们分别看一下C语言中的数组在这几个区域是怎样表示的(注意:这里的机器是x86 64位)。 1、数组与栈区 先来看一段极其简单的代码: void  arr_on_stack () {     int arr[6];        arr[0]=100;     arr[1]=200;     arr[2]=300;     arr[3]=400;     arr[4]=500;     arr[5]=600;     int a = arr[0]; } 我们定义了一个局部变量arr作为int类型的数组,然后分别将100-600写到了数组中。那么,数组arr在内存中是怎样表示的呢? 首先,我们编译一下: # gcc -g -fno-stack-protector a.c 注意,-fno-stack-protector选项是为了禁止堆栈保护,让 ………………………………

原文地址:访问原文地址
快照地址: 访问文章快照
总结与预览地址:访问总结与预览