zoukankan      html  css  js  c++  java
  • 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;
    }
  • 相关阅读:
    NVIC
    ONE WIRE
    对话框
    STM32_USART
    [Java]eclipse的使用
    [转] Android资源管理框架(Asset Manager)简要介绍和学习计划
    [其他]网站收录
    [Java]Java简介
    [网络技术]网关 路由器 OSI
    [安卓]安卓模拟器(Android Emulator)
  • 原文地址:https://www.cnblogs.com/seebro/p/2598118.html
Copyright © 2011-2022 走看看