![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
操作系统
文章平均质量分 64
owxiaohei
https://github.com/OWXIAOHEI
展开
-
操作系统--C++内存分配、内存泄漏
C++内存分配方式详解(堆、栈、自由存储区、全局/静态存储区和常量存储区)一、数据结构中的栈和堆虽说我们经常把堆栈放在一起称呼,但是不可否认的是,堆栈实际上是两种数据结构:堆和栈。堆和栈都是一种数据项按序排列的数据结构。栈:就像装数据的桶或箱子,它是一种具有后进先出性质的数据结构。堆:一种经过排序的树形数据结构,每个结点都有一个值。通常我们所说的堆的数据结构,是指二叉堆。堆的特...原创 2018-04-10 17:28:22 · 952 阅读 · 0 评论 -
操作系统--内存泄漏相关
程序中通常包含着静态内存和栈内存。静态内存用来保存局部static对象、类static数据成员以及定义在任何函数之外的变量(全局变量)。栈内存用来保存定义在函数内的非static对象。分配在静态或栈内存中的对象由编译器自动创建和销毁。对于栈对象,仅在定义的程序块运行时才存在,程序退出,栈对象也随即销毁;static对象和全局对象则是在程序结束时销毁。堆在使用堆空间是就需要使...转载 2018-04-10 17:33:40 · 956 阅读 · 0 评论 -
多线程同步机制,锁的必要条件
创建 在同一个进程中的多线程是处于同一个地址空间内,即只要知道一个线程的地址,就能够在另一个线程中访问该地址的内容,本文即介绍同一个进程中的多线程使用方式。 C++创建多线程指定线程的启动函数和传递参数不同。可以给pthread_create函数传递C++类的静态成员函数和该类的对象指针,因为在不同线程之间的地址是处于同一个地址空间内,所以其他线程也可以访问到。从而通过这种...转载 2018-04-04 00:39:26 · 1055 阅读 · 0 评论 -
pthread的pthread_join()
一、使用方式pthread_t tid;pthread_create(&tid, NULL, thread_run,NULL);pthread_join(tid,NULL);创建线程之后直接调用pthread_join方法就行了。二、为什么要使用pthread_join() 在很多情况下,主线程生成并起动了子线程,如果子线程里要进行大量的耗时的运算,主线程往往将于子线程之前结束...转载 2018-04-04 00:40:48 · 187 阅读 · 0 评论 -
操作系统
malloc/free和new/delete的区别: 1) malloc和free是C/C++语言的标准库函数,new/delete是C++的运算符。 2) malloc/free需要库文件支持,new/delete不需要。 3) new自动计算需要分配空间的大小,malloc需要手工计算字节数,malloc 申请完空间之后不会对内存进行必要的初始 化,而 new 可以。 ...原创 2018-04-05 13:01:23 · 236 阅读 · 0 评论 -
多进程编程,资源共享——fork
fork后父子进程共享资源子进程是父进程的副本。例如,子进程获得父进程数据空间、堆和栈的副本。注意,这是子进程所拥有的副本。父进程和子进程并不共享这些存储空间部分。父进程和子进程共享正文段。子进程对变量所做的改变并不影响父进程中该变量的值。fork后子进程只是获得了父进程的副本,所有变量的变更都只在各自进程中有效。fork后子进程和父进程共享的资源还包括打开的文件实际用户ID、实际组ID、有效用户...原创 2018-04-23 14:50:44 · 995 阅读 · 0 评论 -
操作系统--多线程之间共享哪些资源?
【同一进程间的线程共享的资源有】a. 堆 由于堆是在进程空间中开辟出来的,所以它是理所当然地被共享的;因此new出来的都是共享的(16位平台上分全局堆和局部堆,局部堆是独享的)b. 全局变量 它是与具体某一函数无关的,所以也与特定线程无关;因此也是共享的c. 静态变量 虽然对于局部变量来说,它在代码中是“放”在某一函数中的,但是其存放位置和全局变量一样,存于堆中开辟的.bss和.da...原创 2018-08-21 18:23:57 · 14656 阅读 · 0 评论 -
ios多线程——锁(解决多线程抢夺同一块资源的问题)
在iOS中有几种方法来解决多线程访问同一个内存地址的互斥同步问题:方法一,@synchronized(id anObject),(最简单的方法)会自动对参数对象加锁,保证临界区内的代码线程安全@synchronized(self) { // 这段代码对其他 @synchronized(self) 都是互斥的 // self 指向同一...原创 2018-08-21 18:34:42 · 1749 阅读 · 0 评论 -
进程间通信的方式——信号、管道、消息队列、共享内存
进程间通信的方式——信号、管道、消息队列、共享内存多进程:首先,先来讲一下fork之后,发生了什么事情。由fork创建的新进程被称为子进程(child process)。该函数被调用一次,但返回两次。两次返回的区别是子进程的返回值是0,而父进程的返回值则是新进程(子进程)的进程 id。将子进程id返回给父进程的理由是:因为一个进程的子进程可以多于一个,没有一个函数使一个进程可以获得其所...原创 2018-08-21 18:37:00 · 662 阅读 · 0 评论