本文共 545 字,大约阅读时间需要 1 分钟。
频繁的malloc与free会造成内存碎片化的问题,从而无法进行大容量内存的分配,当然,有的库对此进行了优化,比如glibc,free掉的内存不会立即返还给操作系统,而是先给空闲内存链表,然后当再次进行malloc时会先从空闲内存链表中寻找合适的内存块。可以看看这个: 当然还可以使用内存池。
demo.h
#includeint main( demo.cpp
){ printf("hello\n"); return 0; }答案是能运行,我们需要重新回忆一下C/C++的编译步骤,“首先是预处理阶段,这个阶段,编译器以C文件作为一个单元,首先读这个C文件,发现头文件,就会在所有搜索路径中寻找这两个文件,找到之后,就会将相应头文件中再去处理宏,变量, 函数声明,嵌套的头文件包含等,检测依赖关系,进行宏替换,看是否有重复定义与声明的情况发生,最后将那些文件中所有的东东全部扫描进这个当前的C文件中,形成一个中间C文件”。到这里结果就很清楚了,程序为什么能编译执行
很经典的一道题目,想到了一切好说,想不到就GG,别人已经总结得很好了,我就不再搬一次砖了,请参看:
转载地址:http://jigmi.baihongyu.com/