当前位置:   article > 正文

深信服一面_malloc最大可以申请多大的空间

malloc最大可以申请多大的空间

首先问项目,我的项目和软开没啥关系,所以他直接让我手撕代码了。

手撕代码:

给你一个区间数组,每个数组表示一个乘车人员,算出最少需要多少辆车;

示例:[1, 4] [2, 6] 

输出:2

示例:[1, 2][3, 4]

输出:1

然后问问题,malloc最大能分配多少内存,然后free如何判断要释放多少内存;


32位系统,因为映射区是在1G地址位置,而且映射区与栈相对生长,malloc申请的空间大于128KB的话,调用的是mmap函数,因此分配的地址起始在1G位置,末端为3G,最大2G左右,所以一次最大申请为2G左右,如果小块小块累计申请的话算上堆区128M到1G区间的话,小块申请 malloc调用brk总和就0.9G,累计能申请到的为2.9G。

空间的大小记录在参数指针指向地址的前面,free的时候通过这个记录即可知道要释放的内存有多大。

new和delete是如何分配和释放内存的;

new不止分配内存,而且还是调用类的构造函数

delete的时候要执行析构函数

结构体struct内存对齐的意义是什么;

一来简化了处理器与内存之间传输系统的设计,二来可以提升读取数据的速度。

TCP和UDP的报文有什么区别;

TCP报文一般是20个字节,还有40个可选字节,UDP报文一般为8个字节;

TCP报文的内容比UDP丰富很多;

操作系统中进程通信中,信号的方式有多少种信号;

  • 可以在任何时刻给进程发送信号,信号是进程间通信或操作的一种异步通信机制。

    收到信号后进程对信号的处理有三种方式

    1. 如果是系统定义的信号函数,执行默认操作。

      SIGINT:程序终止信号。程序运行过程中,按Ctrl+C键将产生该信号。

      SIGQUIT:程序退出信号。程序运行过程中,按Ctrl+\\键将产生该信号。

      SIGALRM:定时器信号。

      SIGTERM:结束进程信号。shell下执行kill 进程pid发送该信号。

    2. 捕捉信号。用户可以给信号定义信号处理函数,表示收到信号后该进程该怎么做。

    3. 忽略信号。当我们不希望处理某些信号的时候,就可以忽略该信号,不做任何处理。有两个信号是应用进程无法捕捉和忽略的,即 SIGKILLSEGSTOP,它们用于在任何时候中断或结束某一进程。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/2023面试高手/article/detail/333321
推荐阅读
相关标签
  

闽ICP备14008679号