永发信息网

在内存中,在PIC32上,如何分配INT16的数组

答案:1  悬赏:10  手机版
解决时间 2021-11-23 07:12
  • 提问者网友:自食苦果
  • 2021-11-22 12:15
在内存中,在PIC32上,如何分配INT16的数组
最佳答案
  • 五星知识达人网友:末日狂欢
  • 2021-11-22 12:45
使用C语言编程,实际上使用的内存只有一种——虚拟内存。根据功能的不同在C语言中又将虚拟内存为分三类:栈区、堆区、静态数据区,无论单一变量还是数组,其内存分配都是如此。其中,栈区、静态数据区、堆区都会有编译器负责分配、操作系统负责管理,程序员可以在堆区使用malloc()来动态分配堆内存。
1、栈区:一般每一个函数对应一个栈区,在编译原理中称为栈帧。比如下面的代码:

int main(){//定义一个有20个int元素的数组。此时数组a分配的虚拟内存称为栈区,有编译器自行分配。 int a[20] = {0}; return 0;}

2、静态数据区:这实际上对应于生成的可执行文件的.data区段,因为这个区段在生成的可执行文件中,因此是“静态的”。比如下面的代码:

//定义一个20个int元素的全局数组,此时数组分配的虚拟内存称为静态数据区,有编译器自行分配。int g_a[20]; int main() { return 0;}

3、堆区:堆区是最复杂的,有操作系统负责堆管理,但是当用C语言编译器生成一个可执行文件并且运行时,它会默认建立一些堆。拿Windows来说,每一程序运行,它会建立至少两个堆,一个是默认堆,一个是new堆。比如下面的代码:

int main(){ int *pa = (int*)malloc(sizeof(int)*20);//分配20个int元素大小的堆空间。 return 0;}
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯