高质量两周总结

周需要备考期末所以推迟了每周总结

第一周

关于课堂上我们学习

一,C语言内存的分类

内存分为堆区,栈区,常量区、静态区

1,栈区(Stack)
 
- 主要用于存储函数的参数值、局部变量等。其操作方式类似数据结构中的栈,先进后出。例如,在一个函数调用过程中,函数内定义的局部变量就存放在栈区。当函数执行完毕,这些局部变量所占用的空间会自动释放。

2,堆区(Heap)
 
- 用于动态分配内存。程序员可以通过特定的函数(如C语言中的malloc和free)来申请和释放内存。如果申请了内存但忘记释放,就会导致内存泄漏。比如在创建链表节点时,节点的内存空间通常是在堆区分配的。

3,全局区(静态区)
 
- 包括全局变量和静态变量。全局变量可以在整个程序的多个函数中访问。静态变量又分为静态局部变量和静态全局变量。静态局部变量在函数第一次调用时初始化,并且在函数调用结束后依然存在,下次调用函数时还可以继续使用;静态全局变量则限制了变量的作用域在定义它的文件内。

4,常量区
 
- 用于存放常量字符串和常量数据。这些数据在程序运行期间不能被修改。例如,程序中定义的字符串常量就存放在常量区。

而我们在现在刚刚接触的C语言所编写的代码都是简单代码一般没有使用堆区,而是使用的栈区,内存在函数运行完后会自动释放而且栈区的内存的位置比较小,而堆区才是我们更方便和常规的使用的内存

所以我们学习了动态内存的申请和使用(也就是堆区) 

 malloc申请空间(连续) 
 calloc申请空间+数据初始化
 realloc修改空间大小
 free   释放空间

都在#include<stdlib.h>的头文件里

malloc函数

我们需要注意调用该函数的条件

1,是需要#include<stdlib.h>的头文件

2,需要明白调用该函数的格式是原本malloc的返回值是空类型malloc(是申请的字节数)下面是运用强制转化为int类型方便用指针使用

#include <stdio.h>
#include <stdlib.h>
int main() {
    int *p;
    p = (int *)malloc(sizeof(int));
    if (p == NULL) {
        printf("内存分配失败");
        return 1;
    }
    *p = 10;
    printf("%d", *p);
    free(p);
    return 0;
}

这样就申请了一个堆区的地址

calloc函数

int *arr;
    // 分配可以存储10个整数的空间
    arr = (int *)calloc(10, sizeof(int)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值