最近看了些书,也结合了些程序的编写。有了点收获,自认为重要的总结下来,若有哪个地方写的不对的地方,哪个朋友发现了的话,请您帮忙指出,不胜感激,小弟是新手,呵呵。。。
如果光看书的话,发现有的也挺简单的,但是当一开始动手写程序时,问题就一大堆的出来。这也许就是大神们所提倡的“要学好编程,只有动手编程,编程再编程”,近来深有体会,当然我必须还没有学会编程。只是有一些体会——动手,别盯着书发呆。
1、malloc()函数总结,有几点值得注意的地方
a、检测是否分配成功(要检测返回的制针值是否是空值);
b、要记得你分配的内存空间的大小,操作时不能越界了;
c、在free()内存空间时,要注意free的是malloc分配过的空间;
d、不能访问已经free了的空间;
e、很重要的一点,不能忘了释放空间(防止内存泄漏)。
2、linux的地址空间
text segment(文本段)
data segment(数据段,初始化为非零的静态分配数据和全局数据存放在数据段)
BSS(初始化为零的静态分配数据和全局数据存放在BSS)
heap(堆)动态内存来自于堆,malloc分配的内存就来自于堆
stack(栈)是分配本地(局部)变量的地方
其中heap和stack只有在程序运行时才产生。
3、宏定义小结
宏定义在有的时候很像函数,能实现相同的功能,但是这两者在空间和时间上有些区别,因为宏定义每次只是纯粹的代替,如果一个程序中有很多地方都用到这个宏定义时,那么需要好多空间上的需求,而函数却只存在一处,不需再多的空间。但是宏定义速度快,函数速度慢一些。
阅读(682) | 评论(0) | 转发(0) |