初识c语言day11

本文介绍了C语言中的堆内存管理,包括malloc、free、calloc、realloc等函数的使用,以及堆内存越界和内存泄漏的概念。接着讲解了字符串在计算机中的存储形式,如字符数组和字符串字面值,以及输入输出、字符串处理函数的基本操作。最后提到了输出缓冲区和输入缓冲区的概念及其管理策略。
摘要由CSDN通过智能技术生成

复习:

堆内存管理

    1、c语言中没有管理堆内存的语句,只能使用标准库中的函数

    void *malloc(size_t size);

    功能: 从堆内存申请size个字节的连续内存块

    返回值: 内存块的首地址

    注意: void* 在c语言中是万能指针,可以与任意类型指针相互转换,但是在c++中不能自动转换成其他类型的指针

    如果想让代码在c++编译器中兼容,需要进行强制类型转换

        int* p = (int*)malloc(4);

   

    free

    功能:释放一段堆内存

    注意:不能连续释放同一个地址,但是可以释放NULL

    calloc、realloc

    常见的面试题:

        1、堆内存与栈内存的区别?

            是什么、谁管理、大小、使用、安全、优点、缺点

        2、使用堆内存越界的后果

            1、超过分配的33页产生段错误

            2、破坏了malloc的维护信息,再次使用malloc、free会出错

            3、脏数据

        3、什么是内存泄漏? 你是如何定位内存泄漏的?

            由于业务逻辑出错或者粗心大意导致使用完毕的堆内存没有正常释放,当再次需要时又要重新申请,又没有释放,

            长时间积累下导致可以用的内存越来越少,系统就会越来越慢甚至系统崩溃,这种就叫做内存泄漏

            1、windows 查看任务管理器     Linux ps -aux命令      GDB查看进程中的内存分布情况

            2、借助mtrace(代码分析工具)查看漏写了free

            3、封装malloc和free函数,记录申请和释放内存信息到日志中

一、字符串

    字符:

        在计算机中字符都是以整数形式存储的,当你需要显示成字符时,就会根据ASCII表中的对应关系显示出相应的符号或图案

        '\0'   0      空字符

        '0'    48    

        'A'    65

        'a'    97

    串:

        是一种数据结构,由一组连续的若干个类型相同的数据组成,末尾一定有一个结束标志

        对于这种数据结构的处理都是批量性,从开始的地方一直处理到结束标志停止

   

    字符串:

        由字符组成的串形结构,结束标志很特殊是'\0'

二、字符串的存在形式

    字符数组:

        char str[5] = {'a','b','c','d','e'};

        由char

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值