`
dcj3sjt126com
  • 浏览: 1877516 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

C语言学习七动态分配 malloc的使用

    博客分类:
  • C
阅读更多
/*
	2013年3月15日15:16:24
	malloc 就memory(内存) allocate(分配)的缩写
	本程序没有实际含义,只是理解使用	
 */
# include <stdio.h>
# include <malloc.h>

int main(void)
{
	int i = 5;	//分配了4个字节 静态分配
	int * p = (int *)malloc(4);	//形参只有一个,接收分配内存的字节个数	//12行	
		/*
			1. 要使用malloc函数,必须添加malloc.h头文件,这个函数是在malloc.h这个文件中
			2. malloc函数只有一个形参,并且是整数类型
			3. 4表示请求系统为本程序分配4个字节
			4. malloc函数只能返回第一个字节的地址
			5. 12行分配了8个字节,p 变量占4个字节,p所指向的内存也占4个字节
			6. p本身所占的内存是静态分配的,而p所指向的内存是动态的
		*/
	*p = 5;		// *p 代表的就是一个int变量,只不过*p这个整型变量内存分配方式和11行的i变量的分配方式不同, 上面的i是静态分配的,这里的*p 是动态分配的
	free(p);	//free(p)表示把p所指向的内存给释放掉,p本身的内存是静奇谈怪论的,不能由程序员手动释放,p本身的内存只能在p变量所在的函数运行终止时由系统自动释放

	return 0;
}

 

示例2

# include <stdio.h>
# include <malloc.h>

void f(int * q)
{
	//*p = 200;	//error
	//q = 200;	//error
	*q = 200;	
	//free(q);	//把q所指向的内存释放掉
}

int main(void)
{
	int * p = (int *)malloc(sizeof(int));	//sizeof(int)返回值是int所占的字节数
	*p = 10;
	
	printf("%d\n", *p);
	f(p);	//p是int * 类型
	printf("%d\n", *p);
	
	return 0;
}

 

分享到:
评论

相关推荐

    C语言实现malloc和free

    在C语言中,`malloc`和`free`是两个非常重要的内存管理函数,它们用于动态地分配和释放内存。理解并能自己实现这两个函数对于深入理解C语言内存管理至关重要。`malloc`函数允许程序在运行时请求特定大小的内存块,而...

    C语言动态分配内存PPT学习教案.pptx

    本文将详细介绍C语言动态分配内存的原理、使用方法和注意事项。 一、什么时候需要动态分配内存? 在某些情况下,我们不知道文件的大小,或者需要根据不同的情况动态地分配内存。例如,在解析一批文件时,我们不...

    C语言资源分配问题代码

    合理使用动态内存分配可以避免浪费,同时也能应对不确定的资源需求。 4. 算法设计:在“算法设计与分析”课程中,我们学习了各种优化策略,如贪心算法、动态规划等,它们在资源分配问题中具有广泛的应用。例如,...

    C语言学习实例

    6. **内存管理**:C语言提供了动态内存分配(如`malloc()`和`free()`)的功能。实例可以帮助理解如何在运行时分配和释放内存,以及不当使用可能导致的内存泄漏问题。 7. **文件操作**:学习如何打开、读取、写入和...

    c语言学习系统软件 辅导学习c语言

    4. **内存管理**:包括动态内存分配(malloc, calloc, realloc, free)和内存泄漏的概念,理解内存的堆栈分配,有助于编写更高效和安全的程序。 5. **预处理指令**:如#define宏定义、#include头文件包含、条件编译...

    基于C语言的动态内存分配器.zip

    标题 "基于C语言的动态内存分配器.zip" 涉及到的是一个使用C语言实现的自定义内存分配器项目。动态内存分配是C语言编程中的一个重要概念,它允许程序在运行时根据需要请求和释放内存。这个压缩包包含了一系列相关的...

    操作系统 内存分配与回收 C语言模拟(含源代码和.exe文件)

    它提供了直接访问内存的机制,如`malloc`、`calloc`、`realloc`和`free`等函数,这些函数在C语言中用于动态内存分配和释放。 内存分配主要包括两种类型:静态内存分配和动态内存分配。静态内存分配在编译时完成,...

    C语言学习资料库C语言学习资料库

    7. **动态内存管理**:通过`malloc`、`calloc`、`realloc`和`free`等函数,可以动态地分配和释放内存,这对于编写灵活的程序至关重要。 8. **错误处理与调试**:学习如何使用`printf`和`scanf`等标准输入输出函数...

    C语言学习系统 v3.0

    在C语言中,程序员可以直接分配和释放内存,通过malloc和free函数进行动态内存操作。理解内存管理有助于避免内存泄漏和野指针等问题,提升程序的稳定性和效率。 六、实践环境 《C语言学习系统 v3.0》提供的实践...

    C语言malloc函数用法

    在C语言编程中,动态内存分配是一项关键技能,而malloc函数则是实现这一功能的核心工具。malloc允许程序员在程序运行期间根据需要动态地分配内存,极大地提高了程序的灵活性。本文将详细介绍malloc函数的使用方法,...

    C语言学习资料软件

    内存管理也是C语言的一大特色,学习者需要理解堆栈和堆的区别,学会动态内存分配(malloc、calloc、realloc、free)以及如何避免内存泄漏。此外,指针是C语言的灵魂,理解和运用指针可以实现高效的数据操作和复杂的...

    C语言学习资料合集.exe

    3. **内存管理**:C语言提供了动态内存分配(malloc, calloc, realloc, free)的功能,理解内存分配和释放的机制,能避免内存泄漏和悬挂指针的问题。 4. **预处理器**:预处理器在编译前处理源代码,如宏定义(#...

    C语言的malloc和free函数.pdf

    首先,malloc函数是在C语言中使用最为广泛的内存分配函数之一。它在运行期间为程序分配所需大小的内存空间。其原型定义在stdlib.h头文件中,具体形式为: ```c void* malloc(size_t size); ``` malloc函数接受一个...

    C语言学习电子课件

    内存管理是C语言的一大特色,电子课件会涵盖动态内存分配(malloc, calloc, realloc, free)以及堆栈和堆的概念。理解这些内容有助于编写更高效和安全的程序。 数组和字符串是C语言中的常用数据结构,课件会详细...

    C语言学习版.rar

    7. **错误处理和内存管理**:理解如何处理运行时错误,如除零错误、数组越界等,以及何时和如何使用malloc, free等函数进行动态内存分配和释放。 8. **标准库函数**:C标准库提供了大量函数,如数学运算(math.h)...

    C语言学习笔记 C语言学习笔记

    C语言提供了malloc()和free()函数进行动态内存分配和释放。理解内存的堆栈分配原理,正确使用内存管理,是避免内存泄漏和程序崩溃的关键。 六、错误处理与调试 在C语言中,错误处理通常依赖于条件判断和异常处理...

    C语言学习初中级资料合集

    内存管理是C语言的一大特点,包括动态内存分配(malloc、calloc、realloc、free)和内存对齐。理解这些概念能帮助你避免内存泄漏和提高程序性能。 文件操作是C语言中不可或缺的一部分,通过fopen、fclose、fread、...

    C语言学习资料大全

    - 动态内存分配:使用malloc、calloc、realloc和free函数进行动态内存的申请和释放。 - 内存泄漏:理解内存泄漏的概念,学习如何避免和检测内存泄漏。 7. **算法题库** - 基础算法:排序(冒泡、插入、选择、...

    C语言学习300例很好的哦

    5. 内存管理:C语言提供了动态内存分配(malloc、calloc、realloc、free)的手段,学习者将了解如何在运行时动态创建和释放内存。 6. 输入输出:标准输入输出库(stdio.h)中的printf和scanf函数是C语言中常见的...

    C语言学习资料---PDF格式.zip

    学会使用assert宏进行调试,以及何时何地使用malloc和free进行动态内存分配和释放,可以避免许多常见的编程陷阱。 在学习过程中,实践是必不可少的。文档中可能包含了各种练习题和示例代码,通过动手编写和调试程序...

Global site tag (gtag.js) - Google Analytics