C/C++中动态分配内存和释放内存的联系和区别
即malloc/free 和 new/delete的联系和区别
联系:
它们分配的内存都是在堆,都需要free或者detele释放内存,而且malloc free 以及new delete 都是配套使用的
其次,如果不释放内存,那么都会发生内存泄露~这里简要介绍一下内存泄露吧~
内存泄露就是程序猿申请了内存了,但是没有释放掉~于是这块内存就不能用了~~
区别:
malloc·free是C语言的函数,而new delete是操作符
malloc·free返回的是void类型的指针
而new delete返回的是指明类型的指针
malloc之后,没有初始化
而new之后,是初始化了的
进程和线程的联系和区别
这个题目已经考了无数次了~尽管如此,但老是忘记
一个程序至少拥有一个进程 一个进程至少拥有一个线程
多线程的意义在于,可以并发性高~因为切换进程,效率太低~
进程拥有资源的调度权利~拥有内存~而多个线程共用内存~
这里提到的共享内存~可以做一点补充,刚刚通过百度~猛然发现以前的概念是错误的~
所谓的共享内存~实际上确实会提高效率~
例如进程A和进程B共享一块物理内存之后,A对B的数据读写以及数据更新都是即时可见的,反之亦然~所以提高读写的效率~只是在读写时需要某种同步机制,例如互斥或者信号量
进程拥有独立的地址空间,当一个进程挂掉之后~不会影响其他进程运行
而如果一个线程挂掉~那么这个进程就挂掉了~
那么看官会说,那么就考虑多进程吧~
可是,切换一个进程,是费资源的,效率低~