- 博客(13)
- 收藏
- 关注
原创 进程及进程间通信的相关基础函数
pid_t fork(void); 函数的作用:用于创建子进程。 返回值: fork()的返回值会返回两次。一次是在父进程中,一次是在子进程中。 在父进程中返回创建的子进程的ID, 在子进程中返回0 如何区分父进程和子进程:通过fork的返回值。 在父进程中返回-1,表示创建子进程失败,并且设置errno 父子进程之间的关系:...
2022-01-06 16:45:48
132
原创 LINUX系统部分常用IO函数
int open(const char *pathname, int flags);int open(const char *pathname, int flags, mode_t mode);--pathname:文件路径 --flags:O_CREAT O_WRONLY O_RDONLY O_RDWR O_APPEND --mode 权限设置 such as 0664 0775...
2022-01-06 14:57:29
382
原创 C++的内存管理及内存分配机制
在C++中,虚拟内存分为代码段、数据段、BSS段、堆区、栈区和文件映射区六部分。代码段:包括只读储存区和文本区,其中只读储存区储存字符串常量,文本区储存程序的机器代码。数据段:储存程序中已初始化的全局变量和静态变量。BSS段:储存未初始化的全局变量和静态变量,以及所有被初始化为0的全局变量和静态变量。堆区:调用new/malloc函数时在堆区分配动态内存,同时需要delete/free释放内存。栈区:使用栈空间储存函数的返回地址、参数、局部变量、返回值。映射区:储存动态链接库以及调用
2021-12-30 22:01:39
867
原创 Makefile
一个工程中的源文件不计其数,其按类型、功能、模块分别放在若干个目录中,Makefile 文件定义了一系列的规则来指定哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,因为 Makefile 文件就像一个 Shell 脚本一样,也可以执行操作系统的命令。Makefile 带来的好处就是“自动化编译” ,一旦写好,只需要一个 make 命令,整个工程完全自动编译,极大的提高了软件开发的效率。make 是一个命令工具,是一个解释 Makefile 文件中指令的命令工具
2021-12-23 22:21:43
812
原创 浅谈C++中的四个智能指针
C++中的四个智能指针分别为auto_ptr, shared_ptr, weak_ptr, unique_ptr, 后三个为C++11支持,第一个已经被11弃用。智能指针的作用就是管理一个指针,因为存在以下这种情况:申请的空间在函数结束时忘记释放,造成内存泄漏。使用智能指针可以很大程度上的避免这个问题,因为智能指针就是一个类,当超出了类的作用域是,类会自动调用析构函数,析构函数会自动释放资源。所以智能指针的作用原理就是在函数结束时自动释放内存空间,不需要手动释放内存空间。1.auto_ptra
2021-12-22 15:09:08
106
原创 动态库的制作和使用
命名规则:Linux:libxxx.solib:前缀xxx:名称.so:后缀在linux下是一个可执行文件windows:libxxx.dll制作过程:1.gcc/g++ 获得.o文件 得到和位置无关的代码 例如gcc -c -fpic/-fPIC mycode.c-fpic/-fPIC 得到和位置无关2.得到动态库gcc -shared mycode.o -o mycode.so-shared : 生成目标共享文件,通常在建立共享库时。.
2021-12-21 13:34:02
201
原创 静态库的制作和使用
库文件是计算机上的一类文件,可以简单的把库文件看成一种代码仓库,它提供给使用者一些可以直接拿来用的变量、函数或类。库是一种特殊的程序,编写库的程序和编写一般的程序区别不大,知识库不能单独运行。库文件有两种,静态库和动态库(共享库),区别是:静态库在程序链接阶段被复制到程序中;动态库在链接阶段没有被复制到程序中,而是在程序运行时由系统动态加载到内存中供程序调用。库的好处:代码保密、方便部署和分发静态库的制作命名规则:linux : libxxx.alib:前缀xxx:名字
2021-12-20 22:35:31
192
原创 一些gcc/g++编译器基础知识
源代码(.h .c .cpp)通过预处理器生成预处理后源代码(.i),经编译器后成为汇编代码(.s),通过汇编器生成目标代码,配合启动代码、库代码和其他目标代码通过链接器生成可执行程序(.exe .out)。在你所在的目录下生成一个程序touch mycode.c一般我们直接将源代码编译成为可执行程序,例如gcc mycode.c -o myname将源代码生成预处理后源代码(预处理后注释会被删掉,宏定义会被替换,还有导入包)gcc mycode.c -E经编译器编译成汇
2021-12-20 20:58:22
674
原创 一些函数基础知识
0.函数的分文件编写作用:让代码结构更清晰份文件编写一般有四个步骤:1.创建后缀为.h的头文件2.创建后缀为.cpp的源文件3.头文件写函数的声明 头文件里也要写入框架4.源文件写函数的定义 源文件中要引用头文件 #include"xxx.h"1.函数默认参数在C++中,函数的形参列表中的形参是可以有默认值的。语法:返回值类型 函数名(参数 = 默认值){} 例如:int func(int a = 10);如果某个位置参数有默认值,从这个位置往后,每个参...
2021-12-20 17:30:57
156
原创 一些C++引用的基础知识
引用基本语法数据类型 &别名 = 原名 例如:int a = 10;int &b = a;引用本质就是给变量起别名。 无论操纵原名还是别名,都是操纵同一块内存。注意事项:引用必须初始化,初始化后不可以更改引用(类似指针常量)。引用作函数参数作用:函数传参时,可以利用引用让形参修饰实参。优点:可以简化指针修改实参。通过引用参数产生的效果和地址传递是一样的,引用的语法更简单清楚。引用作函数返回值不要返回局部变量的引用因为局...
2021-12-19 15:45:41
695
原创 一些C++指针基础
1.指针的基本概念指针的作用:通过指针间接访问一块内存。每个变量都有一块地址,指针指向这个地址,对变量进行操作。如何定义一个指针: 数据类型 * 指针变量名//定义指针int a = 10;int *p;//指针记录变量a的地址p = &a;指针本身储存的是一个地址,通过指针前加* 解引用,找到指针指向的内存中的数据。a = 10; p = &a = 0x0000; *p = 10。指针所占内存大小:32位操作系统指针4字节,64位8字节。无论指针指..
2021-12-18 22:06:49
455
原创 说一下C++和C的区别
设计思想上:C是面向过程的结构化编程语言,考虑如何通过一个过程对输入进行处理得到输出;C++是面向对象的编程语言,具有封装、继承和多态三大特性。封装隐藏了实现细节,使代码模块化;派生类可以继承父类的数据和方法,扩展已经存在了的模块,使代码得到重用;多态具体表现为一个接口多种实现,通过派生类重写父类虚函数,实现接口重用。语法上:C和C++的动态管理内存的方法不一样,C是使用malloc/free,而C++除此之外还有new/delete关键字。...
2021-12-18 19:57:48
713
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人