本帖最后由 超神级 于 2014-2-26 20:26 编辑
本文力求通俗易懂简单明了!欢迎大神拍砖、提出修改意见!! 好吧!正式start:
学习动态内存分配的话就必须要提malloc函数了!为什么是malloc函数不是关键字呢!因为malloc的实现真的就是一个函数!有返回类型!有参数!
好吧start第一个动态内存分配程序!咱们也土点也是以跨函数使用吧!
- #include <stdio.h>
- #include <stdlib.h>
- #include <malloc.h>//必须添加头文件
- int *hanshu(void)
- {
- int*p=(int*)malloc(sizeof(int));
- *p=1234;
- return p;
- //int*p用来接收返回的在堆中分配的内存空间地址!
- //(int*)表示返回的类型!(sizeof(int))这句话是要分配的内存空间大小如果里面填入(2)就是2个字节大小!
- }
- int main()
- {
- int a,b,c;
- int*p=hanshu();//此P非彼P因为那个P在函数结束的时候已经被销毁了!
- printf("%d",*p);//输出了1234了吧O(∩_∩)O~!有没有激动的感觉..简单吧!
- //可能有较真的童鞋!说干嘛不定义一个指针那该多么方便啊!
- //(⊙o⊙)嗯!是方便!不过你有没有想过!其实无论是栈的空间还是堆的空间都是有限的!如果你写的程序特别特别大!
- //只使用不释放的话内存迟早是要慢的..
- system("pause");
- free(p);//用完还给系统就好像借东西要还的一样O(∩_∩)O~!为什么是P因为//p是里面是指向那块内存的地址!*p是指指向那块内存的储存的值&p是把指针自身的地址发送过去!
- return 0;
- }
复制代码 好吧!动态内存到此结束!
|