linux内存杂记

1.

linux 优先运用物理内存,当物理内存还有空闲时,linux是不会施放内存

的,即使占用内存的程序已经被关闭了(这部分内存就用来做缓存了)。也就

是说,即时你有2G的内存,用过一段时间后,也会被占满。这样做的裨益是,启

动那些刚开启过的程序、或是读取刚存取过得数据会比较快,对于服务器很有

裨益。 
用 used 减去 buffer 和 cache,才是运行中的程序所占用的空间


2

mmap函数申请的内存是从虚拟内存中分配的,而非物理内存。


3

用malloc函数申请的内存,用free释放后,指针并不为NULL。从搜到的资料看,说free后指针不为NULL,但是指针指向的内存已经被释放,但是我在centos6.3下测试,发现free后还是能输出原先的字符串。但指针不为NULL这个是肯定的。代码如下:

int main()
{
    char * str = NULL;
    str = (char *) malloc(100);
    strcpy(str, "hello");
    free(str);
    if (str != NULL){
        printf("%s\n", str);
        strcat(str, "world");
        printf("%s\n", str);
    }
    return 0;
}
运行结果:

# ./a.out

hello

helloworld

#

先不理会这个结果在其他机器上是不是会不一样,但是在使用free时要切记使指针赋值为NULL,防止野指针,delete也如此。

free(str);

str = NULL;


4

用malloc分配的内存,如果操作的时候越界了,用free释放的时候会报错,而注释掉free就不报错,这种情况不注意就不知道是越界操作的原因.


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值