内存及字符串
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
相关函数 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。
#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;
}