C语言动态申请内存

动态内存:new出来的都是动态的,需要程序员手动创建和回收,但在java中有垃圾回收机制。

静态内存:定义出来都是静态的,int i;int j,系统自动创建和回收。

#include <stdio.h>
#include <malloc.h>//内存分配的头文件
main(){
       int* p ;//在栈内存中申请p的空间
       //这个函数的返回值为void* 所以要把他强转
       p = (int*)malloc(4); //在堆内存申请4个字节的空间
       *p = 123;
       printf("申请内存空间的值为%d\n",*p);
       //重新申请内存空间
       p = realloc(p,8);
       //为新申请的内存地址进行赋值
       *(p+1)=66666;
         printf("重新申请内存空间的值为%d\n",*(p+1));
       free(p);//释放p的内存空间
         system("pause");

       }
时间: 2024-11-03 21:48:32

C语言动态申请内存的相关文章

C++二维数组动态申请内存

好久没用C++刷题了,今天早上刷了几条题,感觉很陌生了.怪我,大二下实在太颓废了,没啥作为. 今天更新个关于c++二维数组内存申请的问题,当初作为菜鸟初学指针的时候,还是在这方面有点搞不通的.今天用到了,顺便写下来,适当时候给C++初学者用用. -----------C++二维数组动态申请内存-------------- 如果对new和delete不是很了解的话可以到这里来看看,http://www.cnblogs.com/hazir/p/new_and_delete.html 首先,我们一般需

C语言和C++中动态申请内存

在C语言和C++的动态内存的使用方法是不同的,在C语言中要使用动态内存要包含一个头文件即 #include<malloc.h> 或者是#include<stdlib.h> 然后用C语言的系统函数 void * malloc(usigned size);来获得动态分配的内存,这个函数参数是需要申请的内存的字节数,返回的是一个申请到的内存的首地址,这个返回的内存的类型是 void ,所以需要根据需要进行强制类型转换,例如 int *array; array= (int *)malloc

动态申请内存和释放

申请 new 1 int *pint = new int(1024);//开辟一片内存空间,用来保存一个int类型的变量,该存储空间的初始值为1024(初始值可以不写),new返回该内存空间的地址并将该地址赋值给指针变量pint 2 int *pia = new int[4]; //开辟一片内存空间,用来保存有4个int元素的数组,返回该内存地址,并赋值给pia 释放 delete delete pint; delete [] pia;//释放数组

C语言动态内存分配

1.new操作符和malloc函数 C++中的new操作符会隐式的考虑到分配的数据类型(与delete配合使用),表达式实例(以int类型为例) new int[4] malloc函数向系统申请一块指定大小的连续内存块(与free配合使用),需要一个参数来指定分配空间的字节大小,函数原型为 void* malloc(unsigned size) 表达式实例 malloc(4*sizeof(int)) malloc函数在内存的堆区中查找符合要求的内存块,若成功则做好标记表示已分配并返回指向该内存块

有关于malloc申请内存和free内存释放

p { margin-bottom: 0.25cm; line-height: 120% } a:link { } malloc工作机制: malloc函数的实质体现在,它有一个将可用的内存块连接为一个长长的列表的所谓空闲链表(堆内存).调用malloc函数时,它沿连接表寻找一个大到足以满足用户请求所需要的内存块.然后,将该内存块一分为二(一块的大小与用户请求的大小相等,另一块的大小就是剩下的字节).接下来,将分配给用户的那块内存传给用户,并将剩下的那块(如果有的话)返回到连接表上.调用free

C语言动态内存的申请和释放

什么是动态内存的申请和释放? 当程序运行到需要一个动态分配的变量时,必须向系统申请取得堆中的一块所需大小的存储空间,用于存储该变量.当不再使用该变量时,也就是它的生命结束时,要显式释放它所占用的存储空间,这样系统就能对该堆空间进行再次分配,做到重复使用有限的资源. 下面将介绍动态内存申请和释放的函数 1.malloc函数 在C语言中,使用malloc函数来申请内存.函数原型如下: #include<stdlib.h> void *malloc(size_t size); 参数size代表需要动

C语言动态内存管理

1-概述 动态存储管理的基本问题是:系统如何按请求分配内存,如何回收内存再利用.提出请求的用户可能是系统的一个作业,也可能是程序中的一个变量. 空闲块 未曾分配的地址连续的内存区称为"空闲块". 占用块 已分配给用户使用的地址连续的内存区称为"占用块". 系统刚刚启动时,整个内存可看做一个大的"空闲块",随着用户请求的进入,系统依次分配相应的内存. 在系统运行过程中,内存被分为两大部分:低地址区(若干占用块)和高地址区(空闲块). 经过一段时间后

C语言动态内存相关函数

C语言动态内存管理函数有4个,分别为malloc,realloc,calloc和free.malloc函数分配一块堆内存:calloc是malloc的变种,功能相同,有细小的差别:realloc修改原内存块大小:free释放参数指针指向的内存块.下面分别介绍它们的函数原型.函数功能和一些特别的注意事项. Function name 函数原型 函数功能 malloc void * malloc ( size_t size ); 向系统申请分配指定size个字节的内存空间.返回类型是 void* 类

C语言动态内存

动态分配内存的概述 在数组一章中,介绍过数组的长度是预先定义好的,在整个程序中固定不变,但是在实际的编程中,往往会发生这种情况,即所需内存空间取决于实际输入的数据,而无法预先确定.为了解决上述问题,c语言提供了一些内存管理函数,这些内存管理函数可以按需要动态的分配内存空间,也可把不再使用的空间回收再次利用 静态分配.动态分配 静态分配 在程序编译或运行过程中,按事先规定大小分配内存空间的分配方式 int a[10] 必须事先知道所需空间的大小 分配在栈区或全局变量区,一般以数组的形式 按计划分配