网站兼容所有浏览器,素材网站建设需要多少费用,免费相册制作app,网页游戏排行榜前十名2023内存管理 C与C的内存分布C语言中动态内存管理方式回顾C内存管理的方式 C与C的内存分布
我们学习C语言时就知道#xff0c;储存不同的变量计算机会相应分配不同区块的内存。那为什么要把内存化为不同的区域呢#xff1f;实质上是为了方便管理 下面我们来看看下面一道例题的内存分布C语言中动态内存管理方式回顾C内存管理的方式 C与C的内存分布
我们学习C语言时就知道储存不同的变量计算机会相应分配不同区块的内存。那为什么要把内存化为不同的区域呢实质上是为了方便管理 下面我们来看看下面一道例题看看C语言阶段的内存管理学习的怎么样
int globalVar 1;
static int staticGlobalVar 1;
void Test()
{
static int staticVar 1;
int localVar 1;
int num1[10] { 1, 2, 3, 4 };
char char2[] abcd;
const char* pChar3 abcd;
int* ptr1 (int*)malloc(sizeof(int) * 4);
int* ptr2 (int*)calloc(4, sizeof(int));
int* ptr3 (int*)realloc(ptr2, sizeof(int) * 4);
free(ptr1);
free(ptr3);
}题目 选项: A.栈 B.堆 C.数据段(静态区) D.代码段(常量区) globalVar在哪里____ staticGlobalVar在哪里____ staticVar在哪里____ localVar在哪里____ num1 在哪里____ char2在哪里____ *char2在哪里___ pChar3在哪里____ *pChar3在哪里____ ptr1在哪里____ *ptr1在哪里____ 要解决这个问题我们不妨先来回顾一下C\C的内存分布 栈向下增长且储存局部变量、函数的参数、返回值等等。 堆向上生长主要是动态开辟的内存用完需要用户自己销毁的空间因此这一块空间需要我们重点关注。 数据段静态区主要储存全局变量与静态变量 代码段常量区主要储存可执行代码与常量。 有了这样的认识那题目自然也就会做了 因此题目答案CCCAA /AAADAB
C语言中动态内存管理方式回顾
1.malloc/calloc/realloc的区别 (1) malloc与realloc、calloc的参数不同 (2) malloc只能用于开辟空间calloc与realloc可用于开辟空间与扩容 (3) calloc除了开辟空间与扩容还有初始化的作用
C内存管理的方式
C语言开辟空间的函数在C中依然可以适用但C也有自己分配空间的函数new与delete 语法规则 需要开辟一个int大小的空间 int* p new int; 如需要开辟存十个int类型的数组 int* p1 new int[10]; 销毁空间 delete p; delete[] p1; 我们发现相比于C语言开辟空间变得更加简洁了那他的好处只有这一个吗 不除了变得更简洁之外new还有诸多好处 1.new还能很好地控制初始化。如
int* p2 new int(10);//表示new一个int控件将该控件初始化为10
int* p3 new int[10]{1,2,3,4,5};//表示new十个int空间并将前五个初始化为大括号内的值既然new能控制初始化自定义类型该怎么处理呢 2.new对于自定义类型会开空间后调用其构造函数;与此同时delete也会调用相应的析构函数。 例如创建链表节点 C语言实现如下 C实现如下 以上的对比大家是不是对new与delete有了新的认知它确实是十分的方便因为它与类和对象的特点进行了有机的结合以后我们开辟空间首选肯定就为new了 3.new开辟失败后不需要我们像malloc那样手动检查它能够直接抛异常