![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
c++
巴巴多斯小魔
这个作者很懒,什么都没留下…
展开
-
内存泄漏及解决
内存泄漏:由于系统问题或程序的某些错误造成未能释放已经不再使用内存的情况。Java循环引用obj.testBlock = ^{ obj.val = xxx;};两个对象之前strong强引用2. Finalizer 引用,GC 已经标记,但是没来及回收3. 全局变量 会一直作为GCRoot 不被回收C++new后不delete、malloc后不free如内核态内存泄漏严重时导致整个操作系统不稳定。常发性内存泄漏。每执行一次就会导致一块内存泄漏偶发性内存泄漏。发生内存原创 2021-08-28 11:10:54 · 177 阅读 · 0 评论 -
2021-04-20
预编译gcc -E hello.c -o hello.i主要处理源代码文件中以#开始的预编译指令。比如#include、#define将所有的#define删除、并展开所有宏定义处理#include,将包含的文件插入到该预编译指令的位置。(这个过程是递归进行的)删除所有的注释添加行号和文件名标识,以便于编译时编译器产生调试用的行号信息及编译错误或警告时能够显示行号。...原创 2021-04-20 16:08:19 · 80 阅读 · 0 评论 -
c++ 面试
staticc/c++共有:静态局部变量:变量不随函数终止而消亡。静态全局变量:该变量只在本文可见。静态函数:该函数只在本文可见。c++特有:静态数据成员:存储在全局数据区,要在类外定义。假如是const static 可以在类内。静态成员函数: 不能访问非静态成员函数和非静态数据成员。const指针和引用未定义行为...原创 2021-02-19 18:09:05 · 57 阅读 · 0 评论 -
c++11新特性
文章目录右值引用右值引用????c++11之前:右值不能被引用,最大限度就是用常量引用绑定一个右值。const int& a=1;这种情况下右值不能被修改。c++11之后:右值可以被修改,编译器为(四声) 非 常右值 参数调用:(A&& x)或(const A&& x)或(const A& x)编译器为 常右值 参数调用:(const A&& x)或(const A& x)以上分别是调用顺序。#include&l原创 2021-02-19 13:32:10 · 73 阅读 · 1 评论 -
malloc、new
malloc()函数原理????c核心库维护一个堆的空闲链表,每次调用malloc()时从链表找到一个可以满足用户请求的内存块,并分成两块,一块大小是请求大小 给用户用,剩余的一块放到链表上。堆管理器会定时的尝试合并相邻堆单元。当空闲链表没有可以满足用户要求的块时,malloc调用brk或sbrk系统调用向操作系统请求更多的内存页。一些优化:对于较大的内存分配,堆管理器可能会直接向OS申请完整的内存页面。可以指定最小分配大小,以防止出现大量碎片。堆可以将自己划分成两个区域,一个用于较小的分配,原创 2021-02-17 19:54:24 · 59 阅读 · 0 评论 -
std::call_once()的实现
std::call_once()的部分源码pthread_cond_wait()为何先加锁后解锁又加锁看完就会对pthread_cond_wait()和pthread_cond_broadcast()有了更好的理解。#include<bits/stdc++.h>#include<windows.h>class once_flag{public: once_flag()noexcept:state(0){} friend void call_once(onc原创 2021-02-16 22:25:09 · 530 阅读 · 0 评论