C语言指针申请与释放

  • 指针申请内存空间
  • 释放内存空间
  • 示例

指针申请内存空间

1)malloc()函数功能分配所需的内存空间,并返回一个指向它的指针。
void *malloc(size_t size);
size:内存块的大小,以字节为单位。

2)calloc()函数功能分配所需的内存空间,并返回一个指向它的指针,且设置分配的内存为零。
void *calloc(size_t nitems, size_t size);
nitems:元素个数;
size:元素大小。

3)realloc()函数功能尝试重新分配的已经申请的内存空间大小。
void *realloc(void *ptr, size_t size);
ptr:指针指向一个要重新分配内存的内存块;
size:内存块的新的大小,以字节为单位。

释放内存空间

在程序运行完成之前,free函数释放掉所申请的内存空间。
free()函数功能释放之前调用calloc()、malloc()或realloc()所分配的内存空间。
void free(void *ptr);
ptr:指针指向一个要释放内存的内存块。

示例

1)malloc():

#include <stdio.h>
#include <string.h>
#include <stdlib.h>int main()
{char *str;/* 最初的内存分配 */str = (char *) malloc(15);strcpy(str, "runoob");printf("String = %s,  Address = %u\n", str, str);if(NULL != str){free(str);//避免指针问题(野指针)str = NULL;}return(0);
}

2)calloc()

#include <stdio.h>
#include <stdlib.h>int main()
{int i, n;int *a;printf("要输入的元素个数:");scanf("%d",&n);a = (int*)calloc(n, sizeof(int));printf("输入 %d 个数字:\n",n);for( i=0 ; i < n ; i++ ) {scanf("%d",&a[i]);}printf("输入的数字为:");for( i=0 ; i < n ; i++ ) {printf("%d ",a[i]);}if(NULL != a){free(a);//避免指针问题(野指针)a= NULL;}return(0);
}

3)realloc()

#include <stdio.h>
#include <stdlib.h>
#include <string.h>int main()
{char *str;/* 最初的内存分配 */str = (char *) malloc(15);strcpy(str, "runoob");printf("String = %s,  Address = %p\n", str, str);/* 重新分配内存 */str = (char *) realloc(str, 25);strcat(str, ".com");printf("String = %s,  Address = %p\n", str, str);if(NULL != str){free(str);//避免指针问题(野指针)str = NULL;}return(0);
}

C语言指针申请与释放相关推荐

  1. 二维数组的动态内存申请,采用子函数的方式 为二级指针申请内存,和释放内存

    原理:二级指针,行指针+列指针 照着葫芦画瓢就行. 方法一:用c语言malloc实现 #include<cstdio> #include<iostream> #include& ...

  2. 指针空间的申请与释放

    一.malloc()和free()的基本概念以及基本用法: 1.函数原型及说明: void *malloc(long NumBytes):该函数分配了NumBytes个字节,并返回了指向这块内存的指针 ...

  3. 指针空间的申请和释放

    一.malloc()和free()的基本概念以及基本用法: 1.函数原型及说明: void *malloc(long NumBytes):该函数分配了NumBytes个字节,并返回了指向这块内存的指针 ...

  4. c语言清理内存程序,C语言中 内存的申请与释放

    内存的申请与释放 对于一段内存的数存,该如何解释,是依赖于数据类型,需要使用 malloc,其使用语法如下: void * malloc(size_t size); 函数 malloc 包含在头文件为 ...

  5. 【C 语言】二级指针作为输入 ( 自定义二级指针内存 | 为 二级指针 分配内存 - 存放 一维指针 | 为每个 一级指针 分配内存 | 释放二维指针内存 )

    文章目录 一.二级指针 1.为 二维指针 分配内存 2.为每个 一维指针 分配内存 3.释放 二维指针 内存 二.完整代码示例 一.二级指针 声明二级指针 : // 声明二维指针char **p = ...

  6. c语言动态申请函数,C语言用malloc函数申请二维动态数组

    C语言在程序运行中动态的申请及释放内存十分方便,一维数组的申请及释放比较简单. Sample one #include int main() { char * p=(char *)malloc(siz ...

  7. C语言指针,这可能是史上最干最全的讲解啦(附代码)!!!

    点击上方"大鱼机器人",选择"置顶/星标公众号" 福利干货,第一时间送达! 指针对于C来说太重要.然而,想要全面理解指针,除了要对C语言有熟练的掌握外,还要有计 ...

  8. c语言贪吃蛇最简单代码_C语言指针,这可能是史上最干最全的讲解啦(附代码)!!!...

    点击上方"大鱼机器人",选择"置顶/星标公众号"福利干货,第一时间送达!指针对于C来说太重要.然而,想要全面理解指针,除了要对C语言有熟练的掌握外,还要有计算机 ...

  9. c语言中buf内容怎么给指针,C语言 指针的使用

    C语言 指针 当使用变量时出现长度不定,譬如在串口通信中,有些通信协议是不定长的,那么这个就应该使用指针:如果使用数组的话,会有下面这两个小问题, 要将数组的大小要定的比较大,已保证能够容纳最大的指令 ...

  10. while循环中指针会自动释放吗_C++】C++常见面试题汇总_持续更新中...

    1:指针(*).引用(&).解引用(*).取地址(&).的概念和区别 概念: 指针指向一块内存,指针保存的是内存的地址:引用是变量的别名,本质是引用该变量的地址. 解引用是取指针指向的 ...

最新文章

  1. GIT_忽略文件和属性文件配置
  2. adams2016安装教程
  3. 《iOS应用软件设计之道》—— 2.11 小结
  4. ekf pose使用方法 ros_robot_pose_ekf 使用说明
  5. dynamic web module消失不见
  6. linux配置服务器超时退出,Linux下实现不活动用户登录超时后自动登出
  7. aes密文长度_RSA加密密文可变(一句话说明)
  8. webServices 应该支持Get和Post调用,在web.config应该增加以下代码
  9. 复习----使用链表实现栈(后进先出)及迭代
  10. java私塾 java篇_Java私塾跟我学系列——JAVA篇 五、
  11. zepto-创建dom
  12. 多媒体网络计算机室标准,10校园网、计算机教室、多媒体教室建设标准试行.docx...
  13. jQuery动画高级用法(上)——详解animation中的.queue()函数 http://www.cnblogs.com/hh54188/archive/2011/04/09/1996469.
  14. 判断对错html,js制作单选题,能判断对错
  15. OpenCV边缘检测算法
  16. mysql表误删回复_MySQL数据库误删恢复
  17. python文件怎么另存为,python文件怎么保存
  18. 哇哦,教你如何使用jumpserver堡垒机添加windows资产
  19. 【壁纸】 Kali Linux 2019.13 原版壁纸
  20. OpenCV提取图像中的垂直线(或者水平线)

热门文章

  1. 固态硬盘故障检测_如何检测固态硬盘是否损坏 - 卡饭网
  2. 蓝阔无线打印服务器设置,蓝阔打印服务器远程打印
  3. 电脑版QQ更换透明背景教程(真的透明)
  4. 网易云Api,轻松获取音乐数据
  5. 桌面云之深信服VDC安装部署和虚拟机模板创建
  6. 深信服云桌面linux客户端,深信服桌面云
  7. KL距离(衡量两个概率分布的差异情况)
  8. excel删除行闪退_xp系统打开excel表格就闪退怎么回事_xp打开excel表格闪退如何解决...
  9. B550-I Ryzen 9 5950X RX 5700 XT 黑苹果efi引导文件
  10. 在精简版的xp添加删除程序里面没有IIS的解决方法