标签: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存储结构 堆分配 战区 兑取
标签:blog io 使用 2014 问题 log size as 学习
原文地址:http://blog.csdn.net/u012878380/article/details/40459575