博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android 下 JNI 开发
阅读量:4046 次
发布时间:2019-05-25

本文共 1081 字,大约阅读时间需要 3 分钟。

  1. 静态内存和动态内存

1、静态内存分配-15

创建文件“静态内存分配.c”

 

#include<stdio.h>

#include<stdlib.h>

/**

  静态内存分配

  在主函数中定义一个指针,指针传递给子函数,子函数给赋值

*/

func(int** pAddress){ 

  int i = 110;   

  *pAddress = &i;    

          

}   

 

main()

{

   

     int* p;     

     

     func(&p); 

     

     printf("*p=%d\n",*p); 

 

     system("pause");          

}      

 

运行结果如图:

 

 

画图分析内存分配情况:

 

 

修改代码执行

main()

{

   

     int* p;     

     

     func(&p); 

     

     printf("*p=%d\n",*p); 

     printf("*p=%d\n",*p); 

     printf("*p=%d\n",*p); 

     printf("*p=%d\n",*p); 

     printf("*p=%d\n",*p);   

 

     system("pause");          

 

 

运行结果如图:

 

特点:静态内存是系统是程序编译执行后系统自动分配,由系统自动释放,静态内存是栈分配的

 

    

 

 

 

2、动态内存-15

malloc(memory allocate) 函数

free(地址); 回收内存

realloc  re- allocate

 

创建文件“动态内存.c

 

#include<stdio.h>

#include<stdlib.h>

/**

  动态内存分配

*/

func(int** pAddress){ 

         int i = 110;

         int* temp;

         //动态的申请一块内存空间

         temp =malloc(sizeof(int)); //返回的是在堆内存中的一块地址

        

         //把申请出来的内存赋值为i;

         *temp = i;

         //把堆内存中的一块地址赋值给 一级指针变量 pAddress

         *pAddress = temp;

         

          

}   

 

main()

{

   

     int* p;     

     

     func(&p); 

     

     printf("*p=%d\n",*p); 

   

 

     system("pause");          

}      

 

运行结果:

画图分析:

打印多次:

 

main()

{

   

     int* p;     

     

     func(&p); 

     

     printf("*p=%d\n",*p); 

     printf("*p=%d\n",*p); 

     printf("*p=%d\n",*p);

     printf("*p=%d\n",*p); 

    

   

 

     system("pause");          

}  

 

 

运行结果如图:

方法执行完后被回收,但是是自己申请的空间,没有回收需要自己回收

 

 

本教程由尚硅谷教育大数据研究院出品,如需转载请注明来源。

你可能感兴趣的文章
国家公务员的级别
查看>>
悼念地震死难者:使整个网页变黑白色(灰色)的特效代码
查看>>
asp.net优化完全技巧
查看>>
道 经
查看>>
德 经
查看>>
藏太甲于桐宫-从电视剧康熙王朝中学到的历史知识
查看>>
开发过程中的沟通问题
查看>>
“众”字透出的哲学
查看>>
恋爱爱情婚姻家庭与炒股票
查看>>
答非所问的古今中外名人小笑话幽默
查看>>
周易、命理、风水、姓名与命运交流周易研究心得:姓名学
查看>>
解决asp.net中tabstrip不能点击的问题
查看>>
PB中使用blob进行文件读取的性能问题
查看>>
DataWindow.net中如何实现鼠标划过时变颜色
查看>>
Datawindow.net中设置字符串的显示,超过长度部分显示为。。。
查看>>
PowerBuilder中使用带返回的powerobjectparm
查看>>
从oracle表中随机取记录,产生随机数和随机字符串
查看>>
功夫熊猫,中国式的哲学和西方式的搞笑
查看>>
Oracle SYS口令深入解析
查看>>
XP中IIS“http500”错误的终极解决方法
查看>>