c语言核心技术,这本书非常好!以下是书中整理,也留给自己日后翻看。
malloc(),calloc() :分配新的内存区域。
void *malloc(size_t size) :分配连续内存区域,大小不小于size字节,但新分配内存区域的内容未确定。
void *calloc(size_t count, size_t size) : 分配不少于count*size大小的内存区域,而且将内存中每个字节都初始化为0.
返回值为分配内存区域第一个字节的地址。分配的内存区会一直存在,除非调用free()或realloc()释放内存。
void *realloc(void *ptr, size_t size) :调整以前分配的内存区域。释放ptr所指区域,并分配一个size字节内存区域,返回首地址,并将旧内存区内容复制到新的内存区中。若分配失败,它不会改变原内存区域。
void free(void *ptr) :释放以前分配区域。
范例:
char *getline(unsigned int len_max)
{
char *linPtr = malloc( len_max + 1);
if (linPtr != NULL)
{
int c = EOF;
unsigned int i = 0;
while ( i < len_max && ((c = getchar()) != '\n' && c != EOF))
linPtr[i++] = (char)c;
linPtr[i] != '\0';
if (c == EOF && i == 0)
{
free(linPtr);
linPtr = NULL;
}
else
linPtr = realloc(linPtr, i + 1);
}
return linPtr;
}