![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++
待木成植2
作品...持续更新......
展开
-
C++ 数组、指针、数组指针、指针数组、多级指针、STL-map、结构体 的 初始化 及其 初始化赋值
它表示一个包含10个元素的【数组a】,每个【元素】都是指向int类型数据的【指针】。想要让【数组】存储【指向 int 或 char 或其他数据类型的指针】想要让【数组】存储【指向 int 或 char 或其他数据类型的指针】new int [m][n] 连续分配m。第二行代码:int (*a)[10];[m] 分散的int*数组,一共m个。从右至左,表示先算右边,再算左边。第一行代码:int* a[10];一个包含10个整数的int类型数组。[]优先级最高,先 a[]原创 2023-04-13 10:10:00 · 683 阅读 · 0 评论 -
线程同步的概念
线程同步的概念一个主线程创建了多个子线程,子线程之间的执行没有顺序,cpu:寄存器存储少量数据实时与物理内存做数据交换取值的时候:通过内存地址具体的过程初始值0,cpu运行时计算的值100没有机会放入内存,此时线程1失去了cpu,线程2开始运行,取得的值0线程2计算的200及时放入内存,此时内存中为200此时线程1又开始运行,继续操作之前的100,此时的100就将前面的200覆盖在上面的过程中发生了覆盖,数据混乱,原因:操作了共享资源cpu调度时分到的时间片并不一定完全相同,原创 2021-10-26 15:29:07 · 122 阅读 · 0 评论 -
线程相关概念
线程相关概念通过pthread_create可以创建一个新的进程是通过增加pcb的方式创建线程之后,地址空间没有变化,进程退化成了线程,为主线程创建出的子线程和主线程公用地址空间。在main函数里的进程为主进程。主线程和子线程有各自独立的pcb,子线程的pcb是从主线程拷贝来的共享内容:.text 代码段.bss未初始化的变量.data初始化的变量堆动态库加载区环境变量命令行参数通信的时候可以使用:全局变量,堆不共享栈,一共有几个线程,栈区就被平均分为5份。linux和w原创 2021-10-13 22:34:04 · 61 阅读 · 0 评论 -
操作系统-线程创建
线程创建pthread_createint pthread_create(pthread_t *thread, //线程ID,为无符号长整型,说明非常大//非常大的线程ID,为7、8位,进程数为5、4位//为传出参数const phread_attr_t *attr, //线程属性,可以设置分里还是不分离//为NULL表示默认不分离void *(*start_routine)(void *), //线程处理函数void *arg //线程处理函数参数,给上面的回调函数传参);返回值成原创 2021-10-13 22:33:17 · 583 阅读 · 0 评论 -
linux中c语言碎碎记
argc 的值必须大于等于1,因为第一个参数是系统自己传的,后面的参数为用户输入的,同样,第二个参数argv为对应的输入字符串atoi为将字符串转换为整数的函数原创 2021-10-13 22:32:05 · 57 阅读 · 0 评论 -
孤儿、僵尸进程
孤儿进程父进程死亡,但是子进程还没有死亡,该子进程为孤儿进程。子进程被init进程领养,init进程变成孤儿进程的父进程目的:为了释放子进程占用的系统资源。进程结束之后,能够释放用户区空间,但释放不了pcb(进程控制块),该pcb必须由子进程的父进程进行释放。#include <stdio.h>#include <unistd.h>#include <stdlib.h>#include <sys/types.h>#include <st原创 2021-10-13 16:50:38 · 66 阅读 · 0 评论 -
进程回收wait
进程回收wait阻塞函数pid_t wait (int * status);返回值:a) -1 回收失败,说明已经没有子进程。b) 大于0:回收是子进程的pid参数: status判断子进程是如何死的a) 正常退出b)被某一个信号杀死调用一次只能回收一个子进程子进程的退出状态 --传出参数WIFEXITED(status):为非0,进程正常结束WEXITSTATUS(status)如果上面的宏为真,则使用现在的这个宏来获取进程退出状态的参数。WIFSIGNALED(statu原创 2021-10-13 16:49:42 · 78 阅读 · 0 评论 -
exec函数族
exec函数族1、让父子进程执行不相干的操作。调用该函数之后,父子进程之间没有任何瓜葛2、能够替换进程地址空间的源代码.txt段,实现换核不换壳(地址空间没有被释放,只是地址里面的源代码换了,也就是说,执行一个另外的程序不需要创建额外的地址空间)的功能3、当前程序调用另外一个应用程序a)首先想到exec之前需要fork创建子进程执行指定目录下的程序execl 变参函数int excel (const char *path, const char *arg, …);path : 要执行程序的绝原创 2021-10-13 09:31:10 · 81 阅读 · 0 评论 -
进程间的共享
进程间数据共享刚fork出来的两个地址的空间用户区数据完全相同后续各自都做了不同的操作,各个进程的地址空间是完全独立的。互不影响。对于一个变量,只做读操作,物理内存中的数据是一份,也就是说,读的时候是共享的。但是,在修改的时候,会拷贝一份再进行修改。即读时共享,写时复制问题:父子之间可不可以通过全局变量进行通信?不能,两个进程间内存不能共享可以用下列程序进行验证要实现共享内存,必须用到管道,文件等待。#include <stdio.h>#include <unistd原创 2021-10-12 22:37:37 · 790 阅读 · 0 评论 -
c++调试错误总结集
[Error] invalid initialization of non-const reference of type ‘int&’ from an rvalue of type ‘std::ios_base& (*)(std::ios_base&)’可能原因:变量没有初始化,直接使用原创 2021-10-12 22:36:37 · 183 阅读 · 0 评论 -
进程--fork
fork程序二进制文件,占用的磁盘空间进程,启动的应用程序所有的数据都在内存中需要占用更多的系统资源代码创建子进程int fork (void) 父子进程的进程id不一样,对于fork函数的返回值,可以据此区别父子进程父进程返回子进程的id,说明子进程创建成功子进程返回0子进程创建成功后,代码的执行位置注:父进程执行到哪,子进程就从哪开始执行如下程序,当i=0时,创建第一个子进程,此时第一个子进程从i=0开始执行当i=1时,创建第二个子进程,此时第二个子进程从i=1开始执原创 2021-10-12 17:00:28 · 77 阅读 · 0 评论 -
Linux--基本使用
编辑源程序直接双击使用命令: vi 文件名原创 2021-10-12 16:59:39 · 45 阅读 · 0 评论 -
进程--PS
PSps auxps a可以看到当前操作系统的所有用户ps au可以显示用户的信息,比前面更详细一点ps aux显示不依赖终端的进程ps aux | grep 关键字| 为管道线,这种方式用的最多,查询进程管道的前后是两个进程在工作注意,如果能够查出来至少是两条ps ajx可以看到PPID PID PGID(进程组) SID(多个进程组放到一起,组成会话)...原创 2021-10-12 16:58:09 · 73 阅读 · 0 评论 -
进程--kill
kill发信号给某个进程,向指定的进程发送信号kill -l查看信号及其对应的id1-31为常用的,之后是给系统预留的kill -99号信号,为宏sigkill ,含义:无条件杀死一个进程再在后面跟一个进程id,则该进程必死无疑...原创 2021-10-12 16:56:49 · 62 阅读 · 0 评论 -
doxygen基本使用
安装部分使用部分注释有三种方式1、/// //////2、/***/3、/*!**/安装软件以及doxygen使用模板安装软件内有我在网上找的两个模板,供直接使用软件下载下载完软件之后,看下面的安装视频安装视频安装以及入门看这个视频就行,注意,顺序一定要跟着视频走,不然会出很多问题注释模板可以直接拿来使用...原创 2021-10-09 14:57:06 · 69 阅读 · 0 评论 -
debug之对拍
对拍新建一个 .bat文件 (一般是先建一个.txt文件,填入下面的内容,再关闭重命名为.bat文件fc 文件名1 文件名2 (不用加引号,直接输入文件名就可以了pause重定向:freopen(“fileName”,”r”,stdin)fileName为文件名,可以为路径,“r” 读,"w"写...原创 2021-09-17 16:59:22 · 86 阅读 · 0 评论 -
迭代器介绍
迭代器正向迭代器,定义方法如下:容器类名::iterator 迭代器名;常量正向迭代器,定义方法如下:容器类名::const_iterator 迭代器名;反向迭代器,定义方法如下:容器类名::reverse_iterator 迭代器名;常量反向迭代器,定义方法如下:容器类名::const_reverse_iterator 迭代器名;用法示例vector::iterator i; //定义正向迭代器for (i = v.begin(); i != v.end(); ++i)原创 2021-09-17 15:57:34 · 109 阅读 · 0 评论