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

内存及字符串

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。
范例 /* 动态配置 10 int 空间* /

#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。

注意 :遇到 \0 over
#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;
}








猜你喜欢

转载自blog.csdn.net/wklnewlife/article/details/8644390
今日推荐