赞
踩
fork()函数的底层实现原理_everthing willl be ok-CSDN博客_fork原理
当进程调用fork后,当控制转移到内核中的fork代码后,内核会做4件事情:
Linux平台通过clone()系统调用实现fork()。 fork(),vfork()和clone()库函数都根据各自需要的参数标志去调用clone(),然后由clone()去调用do_fork(), 再然后do_fork()完成了创建中的大部分工作,该函数调用copy_process().做最后的那部分工作。
C++11中智能指针的原理、使用、实现 - wxquare - 博客园
C++ 虚函数表解析_陈皓专栏 【空谷幽兰,心如皓月】-CSDN博客_虚函数表
C++虚函数详解_Whitesad的博客-CSDN博客_c++虚函数
c++ new 与malloc有什么区别 - ywliao - 博客园
C++仿照标准字符串类string,设计一个自己的字符串类String_之古的博客-CSDN博客_设计一个字符串类string
- #include<iostream>
- #include<cstring>
- using namespace std;
- class String {
- private:
- char * Pstr;
- public:
- String(const char* p = NULL) {
- if (p == NULL) {
- Pstr = new char[1];
- *Pstr = '\0';
- } else {
- Pstr = new char[strlen(p) + 1];
- strcpy(Pstr, p);
- }
- }
-
- String(const String& s): Pstr(new char[strlen(s.Pstr) + 1]) {
- strcpy(Pstr, s.Pstr);
- }
-
- ~String() {
- if (Pstr)
- delete[] Pstr;
- }
- String& operator=(const String& s) {
- if (Pstr == s.Pstr)
- return *this;
- else if (NULL == this) {
- delete Pstr;
- Pstr = new char[strlen(s.Pstr) + 1];
- strcpy(Pstr, s.Pstr);
- } else {
- strcpy(Pstr, s.Pstr);
- }
- return *this;
- }
-
- friend ostream & operator<<(ostream &out, const String &s) {
- out << s.Pstr;
- return out;
- }
-
- friend istream & operator >>(istream &in, String &s) {
- in >> s.Pstr;
- if(in)
- return in;
- }
-
- String operator+(const String &s2) {
- char *p=new char[strlen(Pstr) + strlen(s2.Pstr)+1];
- p=strcat(Pstr,s2.Pstr);
- return String(p);
- }
- void operator+=(const String &s2) {
- strcat(Pstr, s2.Pstr);
- }
- char& operator[](int n) {
- return Pstr[n];
-
- }
- int Length() {
- int n=strlen(Pstr) ;
- return n;
- }
- bool operator==(const String &s2) {
- return strcmp(Pstr, s2.Pstr) == 0;
- }
- bool operator<(const String &s2) {
-
- return strcmp(Pstr, s2.Pstr) < 0;
- }
- };
C 文件编译的过程_sxy19930313的博客-CSDN博客
gcc编译程序的四个阶段(预处理-编译-汇编-链接)_Aikenlan的博客-CSDN博客
预编译 :
编译
汇编
链接
面试必考的:并发和并行有什么区别? - 云+社区 - 腾讯云
为什么需要中断?_jwy2014的专栏-CSDN博客_为什么要使用中断
什么是中断,为什么要用中断?_old-li的blog-CSDN博客
物理地址、虚拟地址和逻辑地址之间的区别_SoaringLee_fighting的技术专栏-CSDN博客
C++ Primer:常量引用、引用常量、常量指针、指针常量 - 简书
指针函数
- #include <iostream>
- using namespace std;
- #include<string.h>
-
- int *newAdd(int a, int b); // 声明指针函数
-
- int main() {
- int *p1 = NULL;
- p1 = newAdd(1, 2);
- printf("p1 = 0x%x \n", p1);
- printf("*p1 = %d \n", *p1);
- getchar();
- return 0;
- }
- int *newAdd(int a, int b) {
- int *p = (int *)malloc(sizeof(int));
- memset(p, 0, sizeof(int));
- printf("函数内:p = 0x%x \n", p);
- *p = a + b;
- printf("函数内:*p = %d \n", *p);
- return p;
- }
函数指针
- #include <iostream>
- using namespace std;
- int add(int x,int y){
- return x+y;
- }
- int sub(int x,int y){
- return x-y;
- }
- //函数指针
- int (*myfun)(int x,int y);
- int main(int argc, char *argv[])
- {
- //第一种写法
- myfun = add;
- cout << "(*myfun)(1,2) = " << (*myfun)(1,2) << endl;
- //第二种写法
- myfun = ⊂
- cout << "(*myfun)(5,3) = " << myfun(5,3) << endl;
- return 0;
- }
区别
1)定义不同
2)写法不同
int* fun(int x,int y);
int (*fun)(int x,int y);
3)用法不同
C语言中给指定的内存地址赋值(通过指针)_phenixyf的专栏-CSDN博客
- int i = 0;
- std::cout << &i << std::endl;
- int *ptr = (int *)(&i);
- *ptr = 55;
- std::cout << *(int *)(&i)<<std::endl;
全局变量和静态全局变量_calm_peng-CSDN博客_静态全局变量
- static函数与普通函数的区别:
- 用static修饰的函数,本限定在本源码文件中,不能被本源码文件以外的代码文件调用。而普通的函数,默认是extern的,也就是说,可以被其它代码文件调用该函数。
- 在函数的返回类型前加上关键字static,函数就被定义成为静态函数。普通 函数的定义和声明默认情况下是extern的,但静态函数只是在声明他的文件当中可见,不能被其他文件所用。因此定义静态函数有以下好处:
- <1> 其他文件中可以定义相同名字的函数,不会发生冲突。
- <2> 静态函数不能被其他文件所用。
OSI七层模型及对应的网络协议_小麻花-CSDN博客_七层模型对应的协议
HTTPS底层实现原理_风某人~Wind的博客-CSDN博客_https的底层原理
一文搞懂TCP与UDP的区别 - Fundebug - 博客园
UDP | TCP | |
是否连接 | 无连接 | 面向连接 |
是否可靠 | 不可靠传输,不使用流量控制和拥塞控制 | 可靠传输,使用流量控制和拥塞控制 |
连接对象个数 | 支持一对一,一对多,多对一和多对多交互通信 | 只能是一对一通信 |
传输方式 | 面向报文 | 面向字节流 |
首部开销 | 首部开销小,仅8字节 | 首部最小20字节,最大60字节 |
适用场景 | 适用于实时应用(IP电话、视频会议、直播等) | 适用于要求可靠传输的应用,例如文件传输 |
[Linux]互斥机制(中断屏蔽、原子操作、自旋锁、信号量)_Younix凌乱的草稿本-CSDN博客
进程间通信的方式——信号、管道、消息队列、共享内存 - 0giant - 博客园
查看linux的位数 不能使用sizeof
查看当前linux系统位数 - controlV - 博客园
- 命令1:getconf LONG_BIT
- 结果:64
-
- 命令2:uname -a
- 结果:Linux Test004MUJUP 2.6.32-431.23.3.el6.x86_64 #1 SMP Wed Jul 16 06:12:23 EDT 2014 x86_64 x86_64 x86_64 GNU/Linux
-
- 命令3:uname -r
- 结果:2.6.32-431.23.3.el6.x86_64
-
- 命令4:cat /proc/version
- 结果:Linux version 2.6.32-431.23.3.el6.x86_64 (mockbuild@x86-027.build.eng.bos.redhat.com) (gcc version 4.4.7 20120313 (Red Hat 4.4.7-4) (GCC) ) #1 SMP Wed Jul 16 06:12:23 EDT 2014
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。