Linux Glibc(学习笔记五)待续。。。。

来源:互联网 发布:垃圾焚烧发电厂 知乎 编辑:程序博客网 时间:2024/05/01 08:54

内存及字符串

1. calloc(配置内存空间)

相关函数 malloc,free,realloc,brk
表头文件 #include <stdlib.h>
定义函数 void *calloc(size_t nmemb,size_tsize);
函数说明 calloc()用来配置nmemb个相邻的内存单位,每一单位的大小为size,并返回指向第一个元素的指针。这和使用下列的方式效果相同: malloc(nmemb*size);不过,在利用calloc()配置内存时会将内存内容初始化为0。
返回值 若分配成功则返回一个指针,失败则返回NULL。
范例 /* 动态配置10int空间*/

#include <stdlib.h>struct test{int a[10];char b[20];};int main(){int *ptr = NULL, *ptr1 = NULL;ptr =  calloc(10, sizeof(int));ptr1 = calloc(10, sizeof(struct test));if(NULL != ptr){printf("free ptr  memory!\n");free(ptr);}if(NULL != ptr1){printf("free ptr1 memory!\n");free(ptr1);}return 0;}

2. malloc(配置内存空间) 相关函数 calloc,free,realloc,brk
表头文件 #include<stdlib.h>
定义函数 void * malloc(size_t size);  

例:malloc(sizeof(type)*num)

函数说明 malloc()用来配置内存空间,其大小由指定的size决定。
返回值 若配置成功则返回一个指针,失败则返回NULL。 单位为字节B

例如:void *p = malloc(1024);

realloc( 更改已分配的内存空间)

定义函数 void * realloc(void *ptr,  size_t size);


3. free(释放原先配置的内存) 相关函数 malloc,calloc,realloc,brk
表头文件 #include<stdlib.h>
定义函数 void free(void *ptr);
函数说明 参数ptr为指向先前由malloc()、calloc()或realloc()所返回的内存指针。调用free()后ptr所指的内存空间便会被收回。假若参数ptr所指的内存空间已被收回或是未知的内存地址,则调用free()可能会有无法预期的情况发生。若参数ptr为NULL,则free()不会有任何作用。(不能进行连续两次free)

例子参考1


4. getpagesize(取得内存分页大小)
相关函数 sbrk
表头文件 #include<unistd.h>
定义函数 size_t getpagesize(void);
函数说明 返回一分页的大小,单位为字节(byte)。此为系统的分页大小,不一定会和硬件分页大小相同。
返回值 内存分页大小。
附加说明在Intelx86 上其返回值应为4096bytes。

#include <stdlib.h>int main(){printf("page size =  %d;\n", getpagesize());return 0;}

5. index(查找字符串中第一个出现的指定字符) 相关函数 rindex,strchr,strrchr
表头文件 #include<string.h>
定义函数 char * index( const char *s, intc);
函数说明 index()用来找出参数s字符串中第一个出现的参数c地址,然后将该字符出现的地址返回。字符串结束字符(NULL)也视为字符串一部分
返回值 如果找到指定的字符则返回该字符所在地址,否则返回0。

注意:遇到 \0over
#include <string.h>int main(){char *s = "0123456 7890123456789";char *p = NULL, *p1;p1 = index(s, '6');p = index(s, ' ');printf("address:%s, char[%c]\naddress:%s, char[%c]\n", p1, *p1, p, *p);return 0;}








原创粉丝点击