`

动态内存分配_c语言学习笔记

 
阅读更多
1. 动态内存分配
    1)与 静态内存分配 相对,指在程序运行中,根据程序的实际需要来分配一块大小合适的连续的内存单元。
    2)动态分配的内存需要有一个指针变量记录内存的起始地址。
    3)常用的动态内存分配函数有 malloc(),  calloc(),  realloc() 等。

2. malloc() 函数:
    1)函数原型: void  *malloc ( unsigned int size);
    2)参数size,指申请分配的内存大小,一般写成 分配数量 x sizeof(内存单元类型)
    3)返回值是NULL(空指针)时,表示分配内存失败;否则,返回值是一个指向空类型(void)的指针,说明返回的指针所指向的内存块可能是任何类型。
int n, *p;
scanf("%d", &n);
p = (int *) malloc( n * sizeof(int) );	// 分配n个连续的整型单元,首地址赋给p
if ( p == NULL )						// 分配内存失败,给出错误信息后退出
{
	printf("分配内存失败!");
	exit(0);
}
...										//可对p所指向的单元进行其他处理


3. 函数 calloc()
    1)函数原型: void  *calloc ( unsigned int num,  unsigned int size );
    2)参数:num 表示向系统申请的内存空间的数量;size 表示申请的每个内存空间的字节数。
    3)返回值:分配内存成功,返回一个 void 类型的连续存储空间的首地址;分配失败,返回空指针NULL。

4. 函数 realloc()
    1)函数原型: void *realloc ( void *p,  unsigned int size );
    2)作用:将指针 p 所指向的存储空间的大小改为 size 个字节。用于改变原来分配的存储空间的大小。
    3)适用于先前通过动态内存分配的存储空间需要进行扩充或缩小的情况,好处是原存储空间中的数据能保持不变。

5. 释放动态内存函数 free()
    1)函数原型:void free( void  *block );
    2)参数 block 一般为指向分配的动态内存首地址的指针变量。
    3)free() 函数一般和 malloc() 等函数成对使用。



分享到:
评论

相关推荐

    C语言指针、函数指针学习笔记.md

    通过学习可以全面掌握C语言中的指针知识,熟练使用指针与字符串、指针数组、动态内存分配和函数指针。 使用建议: 重点学习指针与动态内存分配,以及函数指针的使用。针对示例代码进行实践是一个好方法。本课件内容...

    C语言内存管理与联合结构课件笔记.md

    本课件首先介绍了C语言中的内存管理知识,包括堆栈概念、动态内存分配函数及内存泄漏等问题,并给出了示例代码。然后详细讲解了C语言中的结构体与联合的定义、访问及嵌套使用,每部分都配有代码实例说明。内容结构清晰,...

    C语言学习笔记

    系统会给程序分配内存空间,包括静态数据区,代码段,堆和栈,然后将程序中的常量和变量分别载入静态数据区的常量和变量区域,代码段用来存放程序的函数代码,程序中使用的malloc()和free()都是对堆的动态分配和...

    【内含学习笔记】你必须知道的495个C语言问题

    然后又使用一些内存分配技巧使namestr 数组用起 来好像有多个元素。这样合法和可移植吗? . . . . . . . . . . . . 8 2.7 是否有自动比较结构的方法? . . . . . . . . . . . . . . . . . . . . 8 2.8 如何向接受...

    利用java语言开发设计C语言水平提高题库测评管理系统.zip

    这些题目将涵盖从基础到高级的各个方面,包括变量、数据类型、循环、函数、指针、结构体、文件操作、动态内存分配等内容。我们将根据不同阶段学生的能力和需求,设计出不同难度的题目,让学生逐步提高自己的编程水平...

    c++基础教程,简洁扼要

    70 动态内存分配 Dynamic memory pointer = new type pointer = new type [elements] 第一个表达式用来给一个单元素的数据类型分配内存。第二个表达式用来给一个数组分配内存。 例如: int * bobby; bobby = new int...

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 连接字符串

    oracle的框架主要由物理结构、逻辑结构、内存分配、后台进程、oracle例程、系统改变号 (System Change Number)组成  物理结构 物理结构包含三种数据文件: 1) 控制文件 2) 数据文件 3) 在线重做日志文件  ...

    vs没报错leetcode报错-data-structure-and-algorithm:《数据结构与算法分析》笔记+代码

    vs没报错leetcode报错 数据结构与算法 结合知识点思维导图, 按知识点学习,每个知识点重复以下步骤 1. 学习知识点:在《算法:C语言实现》,《数据结构与算法分析...通过分配内存来新建一个原生数据型数组 可以使用

    程序员面试刷题的书哪个好-CppNote:笔记

    程序员面试刷题的书哪个...内存中的栈和堆分配 2 面对对象基础 (务必熟悉底层机制原理) 面向对象理解 析构函数 构造函数 拷贝构造 多态 纯虚函数和虚函数 虚函数实现机制 虚函数表 访问限定符 public、private、prote

Global site tag (gtag.js) - Google Analytics