zoukankan      html  css  js  c++  java
  • 【C语言入门教程】4.7 指针的地址分配

    指针变量可指向任何类型的变量,在处理过程中,指针变量指向的变量通过传递变量的地址来实现,指针变量的取值是内存的地址,这个地址应当是安全的,不可以是随意的。否则,写入内存单元的值将使得已存放的数据或程序丢失。应使用变异系统提供的标准函数来实现地址分配。

    GCC编译器支持动态分配内存的函数 malloc()free(),它们包含在头文件 stdlib.h 中。动态内存分配的含义是在程序执行的过程中,动态地划分内存空间供程序使用。当程序不需要使用这些内存空间,则可以将其释放。malloc() 函数的作用是向操作系统申请内存,free() 函数的作用是释放所申请的内存。如下例所示:

    char *pc;			// 声明字符型指针变量 pc
    pc = malloc(50);	// 在内存中为程序申请 50 字节的空间,并将首地址赋值给指针变量 pc
    if (pc != NULL)		// 如果分配内存成功,则执行下列源代码
    {
    	scanf("%49s", pc);	// 从键盘输入获得字符串,并保存在 malloc() 所划分的内存空间内
    	puts(pc);			// 输出字符串
    	free(pc);			// 释放 malloc() 函数所申请的内存空间
    	pc = NULL;			// 是指针指向空地址,避免再次引用所释放的内存空间
    }

    malloc() 函数的参数是长整型数值,该数值表示所申请的字节数。如果分配内存失败返回 NULL,如果成功返回所申请内存空间首地址。free() 函数必须与 malloc() 配对使用,在不需要所申请的内存空间后将其释放,否则
    会造成内存泄漏,影响操作系统和其他程序运行。另外需要注意的是,free()函数释放指向 NULL 的指针,或释放指向并非 malloc() 函数所申请内存空间的指针都会造成严重的程序错误。

  • 相关阅读:
    系统兼容性与软件兼容性
    SqlServer 笔记三 规则
    Sql Server 2008 与 Visual Studio 2008 安装说明
    Ms Sql Server
    Git系列教程三 配置与基本命令
    Git系列教程一 入门与简介
    Git系列教程二 基础介绍
    浏览器IE与非IE区分
    SqlServer 笔记二 获取汉字的拼音首字母
    时间戳与日期字符串的转换
  • 原文地址:https://www.cnblogs.com/52php/p/5681346.html
Copyright © 2011-2022 走看看