• c动态内存管理拾遗


    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;
    }
  • 相关阅读:
    ES6入门详解(二) 解构赋值
    python 入门简述
    webpack4x 简述
    ES6入门详解(一) let const
    关于HTML的简述
    按照in条件排序
    Oracle 优化效率
    input输入框校验
    <a>标签操作
    svn安装
  • 原文地址:https://www.cnblogs.com/seebro/p/2598118.html
Copyright © 2020-2023  润新知