Glibc 内存申请和释放及堆连续检查(2)

#include<stdlib.h>
int posix_memalign(void **memptr, size_t alignment, size_t size)
/*说明*/
//posix_memalign通过memptr返回地址,所以memptr使用了指针的指针。(应该不难理解)
//与memalign不同的地方:alignment的值必须是sizeof(void *)的正数倍,且为2的n次方。(当然所有的内存对齐申请函数的alignment都必须是2的n次方)

#include<stdlib.h>
void *valloc(size_t size)

/*说明*/
//等同于如下的函数
void * valloc (size_t size)
{
    return memalign(getpagesize(), size);
}

//可见,valloc申请的内存边界是以页为大小的。

想要设置内存申请的参数,可以使用mallopt函数

#include <malloc.h>
int mallopt(int param, int value);

传进的参数是一对的,param=value。详细介绍以后再写,或者查看man手册。

动态申请的内存块是堆内存,堆内存不一定是连续的。如果我们想检查其连续性可以使用mcheck函数

#include<mcheck.h>
int mcheck(void (*abortfn) (enum mcheck_status status))
/*简要说明*/
//参数:函数指针,该函数指针指向的函数需要接收mcheck_status的枚举类型。
//mcheck 在检查堆连续性时,如果发现不连续,会调用abortfn指向的函数。如果你提供的时空指针,则会使用默认函数(打印相关信息后停止程序)
//为了能让mcheck函数起作用,你需要在编译选项中添加-lmcheck选项。
//另外你也可以在gdb调试时调用mcheck函数。
//状态值:描述了不连续的类型(具体的查看手册)

Linux升级Glibc 

危险!GHOST(幽灵)漏洞曝光 

GNU glibc 爆 gethostbyname 缓冲区溢出漏洞 

glibc gethostbyname缓冲区溢出漏洞(CVE-2015-0235) 

Linux glibc幽灵漏洞测试与修复方法

Glibc 的详细介绍请点这里
Glibc 的下载地址请点这里

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/fd59272fe41d8d5c3a978d0885096fef.html