c语言基础8 - 堆区和makefile

一、堆区

堆区申请malloc函数,释放free,头文件stdlib.h,标准lib库,

 void *任意类型的指针,一般放在函数头,函数类型

malloc申请堆区内存

void  *malloc(size_t size);

功能:在堆区申请size字节的内存空间

参数:size 申请的内存大小

返回值:成功  申请到的内存的首地址

     失败  NULL

                

void  bzero(void *s,size_t n);   头文件是string.h

功能:清空s所指向的内存,并初始为零

参数:s 内存的首地址,n内存的大小

返回值:无

使用头文件string.h

void  free(void *ptr);   

功能:释放堆区内存

参数:ptr   malloc的返回值

返回值:无

注意事项

1.malloc申请不一定成功,需要判断返回值,NULL为失败

2.申请的内存不一定干净,初始化bzero(px,4)

3.指针使用不能越界

4.指针使用完毕之后必须进行释放 free ,释放的是申请的首地址,不释放会内存泄漏,检查工具

     valgrind --tool=memcheck ./a.out

少释放造成内存泄漏,多释放会 double free

5.内存free后,指针需要赋值为NULL, px=NULL;否则访问*px会段错误

C语言中,#开头的语句叫命令,不是语句,#if0,#endif

 gcc编译过程

1.预处理  gcc -E xxx.c -o xxx.i

展开头文件,替换宏,去掉注释 

2.编译   gcc -S xxx.i -o xxx.s

将C语言转换为汇编语言

3.汇编   gcc -c xxx.c -o xxx.o

将汇编语言转换成机器码

4.连接   gcc xxx.o -o xxx

指定程序入口位置

二、Makefile

make工程管理器 ==》 linux系统中管理多文件变成的工具,用于编程过程中多个资源文件之间的编译控制。符合大部分linux下软件的控制流程。

原理:根据Makefile脚本文件的规则执行批量处理命令

make 工程管理工具默认已经安装

            对应的配置文件需要程序员指定:makefile   Makefile

            执行make操作会默认查找以上两个文件并执行文件规则

执行:

        在在工程目录下执行make命令会自动按照makefile编译

       

makefile的文件编写规则:

        目标文件:依赖文件

        <TAB>    执行命令

        make编译过程会根据工程文件中每个文件的 时间戳 来决定是否参与变异

        make直接回车默认生成第一个目标文件

        make xxx只生成xxx相关的目标,xxx只能是makefile的目标

       

makefile 的变量:

        1、自定义变量

        2、系统变量

        3、自动变量

自定义变量  ==》  替换大量出现的重复字符串

            格式:变量名称 = 目标字符串

            使用:$(变量名称);       

系统变量 ==》 系统内置的特定含义的变量

             FLAGS = -Wall -c -g

自动变量 ==》$@  $<  $^

            $@ ⇒  默认的目标文件名称

            $<   ⇒ 默认的第一个依赖文件名称

            $^  ⇒  默认所有的依赖文件

            *  代表任意文件

            % 代表一个同名文件

            .PHONY:   伪目标

            # 注释

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值