11 2021 档案
摘要:(一)概念信号量是一个整数,这个整数允许多进程或多线程同步他们的操作。这个整数必须大于等于0. linux库函数中,类似有名映射、匿名映射,有名管道、无名管道,信号量也有有名信号量和匿名信号量。匿名信号量在内存中,不在文件系统中,一般用于线程之间的同步;有名信号量需要创建文件,一般用于进程之间的同步
阅读全文
摘要:1. C 互斥锁 mutex初始化与去初始化 #include <pthread.h>int pthread_mutex_init(pthread_mutex_t *mutex, const pthread_mutexattr_t *attr);int pthread_mutex_destroy(p
阅读全文
摘要:一个由C/C++编译的程序占用的内存分为以下几个部分: 1、栈区(stack):由系统自动分配和释放,存放函数的参数值,局部变量的值等。 2、堆区(heap):一般由程序员分配和释放,若程序员不释放,程序结束时可能由系统回收。 3、全局区/静态区(static):全局变量和静态变量的存储是放在一起的
阅读全文
摘要:一、基本定义 1、sizeof是C/C++中的一个运算符,其作用是返回一个对象或者类型在内存中所占用的字节数。 注意:sizeof后面如果是类型则必须加括号,如 sizeof(char);而如果是变量名则可以不加括号,如 sizeof a; 但是建议使用时 均加上括号。sizeof不能返回动态地被分
阅读全文
摘要:一、定义 进程:具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位。 线程:是进程的一个实体,是cpu调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源,但是它可以和同属于一个进程
阅读全文
摘要:一、const关键字简介 const是单词constant的简写,若一个变量前用const修饰,就意味着该变量里的数据可以被访但不能被修改,即该变量是“只读”的。 二、const关键字的用法 1. 用于修饰局部变量 例如: const int n = 5;int const n = 5;/*二者是等
阅读全文
摘要:一旦函数被编译并载入计算机中执行,它就会占用一块内存,这块内存有一个地址,因此函数也有地址。 1. 定义一个函数指针 示例代码如下: void (*funcPtr)(); 这个例子将funcPtr定义为一个指向函数的指针,这个函数没有参数,返回值为空。 注:*funcPtr 两侧的括号是必须的,如果
阅读全文
摘要:一、什么是大端和小端所谓的大端模式,就是高位字节排放在内存的低地址端,低位字节排放在内存的高地址端。 所谓的小端模式,就是低位字节排放在内存的低地址端,高位字节排放在内存的高地址端。 简单来说:大端——高尾端,小端——低尾端 举个例子,比如数字 0x12 34 56 78在内存中的表示形式为: 1)
阅读全文
摘要:联合体用途:使几个不同类型的变量共占一段内存(相互覆盖) 结构体是一种构造数据类型用途:把不同类型的数据组合成一个整体 自定义数据类型 总结: 声明一个联合体: union abc{ int i; char m; }; 1. 在联合体abc中,整型量i和字符m公用同一内存位置。 2. 当一个联合被说
阅读全文
摘要:一、什么是字节对齐? 在现代计算机中,内存空间都是按照字节(byte)划分的。从理论上讲对任何类型的变量的访问可以从任何地址开始,但实际情况是,访问特定类型的变量的时候经常在特定的内存地址访问,这就需要各种类型的数据按照一定规则在空间上排列,而不是顺序地一个接一个地排放,这种所谓的规则就是字节对齐。
阅读全文
摘要:参考博客:https://blog.csdn.net/Littlehero_121/article/details/111171045
阅读全文
摘要:变量1. 局部变量普通局部变量是再熟悉不过的变量了,在任何一个函数内部定义的变量(不加static修饰符)都属于这个范畴。编译器一般不对普通局部变量进行初始化,也就是说它的值在初始时是不确定的,除非对其显式赋值。 普通局部变量存储于进程栈空间,使用完毕会立即释放。 静态局部变量使用static修饰符
阅读全文
摘要:malloc()函数 malloc的全称是memory allocation,中文叫动态内存分配。 原型:extern void *malloc(unsigned int num_bytes); 说明:分配长度为num_bytes字节的内存块。如果分配成功则返回指向被分配内存的指针,分配失败返回空指
阅读全文
摘要:C语言编译过程为:预处理-->编译-->汇编-->链接 1. 编译过程 编译过程又可以分成两个阶段:编译和汇编。 编译 编译是读取源程序(字符流),对之进行词法和语法的分析,将高级语言指令转换为功能等效的汇编代码,源文件的编译过程包含两个主要阶段: 编译预处理 读取c源程序,对其中的伪指令(以# 开
阅读全文