码迷,mamicode.com
首页 > 编程语言 > 详细

重拾c语言之动态内存分配

时间:2014-10-26 00:29:49      阅读:214      评论:0      收藏:0      [点我收藏+]

标签:blog   io   使用   2014   问题   log   size   as   学习   

动态内存分配
传统数组的缺点:
1数组长度必须事先制定,且只能是长整数不能是变量
2传统形式定义的数组该数组的内存程序无法手动释放
3数组一旦定义,系统就会为该数组分配的存储空间就会一直存在直到该函数运行结束
4数组的长度不能再函数的运行的过程中动态的扩充或者缩小
5不能跨函数使用
为什么需要动态分配内存
动态内存分配内存举例——动态数组的构造
静态内存分配和动态内存分配
跨函数使用内存的问题

#include<stdio.h>
void f(void)
{
int a[5]={0,1,2,3,4}//无法手动释放要本函数运行完之后要系统释放
}
int main()
{
f();
}

#incliude<stdio.h>
#include<malloc.h>
int main()
{
int i=5;/*静态分配*/
/*分配八个字节p存储首地址编号*/int *P=(int *)malloic(4);/* 第二个int *强制转换成int型 *//*表示四个字节但是只用首地址表示*/
free(p);//free(p)表示把p所指向的内存给释放掉
//p本身的内存是不能程序员手动释放
}/*malloc只能呢过返回首地址*/
p本身所占的内存是静态分配的  p是所指的内存的动态

//malloc函数学习动态内存分配
#include<stdio.h>
void f(int *q)
{
*q=200;
如果这里写free(p);则后面主函数中的无意义
}
int main()
{
int *p=(int*)malloc(sizeof(int))
*p=10;
printf("%d\n",*p);
f(p);
/*free(p);*/这样也是错的因为已经释放内存
printf("%d\n",*p);
 } zhan存储结构 堆分配
 战区 兑取
 
 


重拾c语言之动态内存分配

标签:blog   io   使用   2014   问题   log   size   as   学习   

原文地址:http://blog.csdn.net/u012878380/article/details/40459575

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!