android108 内存分配

简介:
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>  //包含头文件 

main(){
       int i = 3;//栈中 
       int arr[10];//栈中 
       int* p = malloc(sizeof(int) * 10);//p在栈中,malloc在堆里面长度为10个整型,malloc出来的内存是连续的。 
       *p = 10;
       *(p+1) = 20;
       
       printf("%#x\n", p);//0x3e3cf0 
       printf("%d\n", *p);//10 
       printf("%d\n", *(p+1));//20 
       printf("%d\n", p+1);//4078836 
       printf("%d\n", *(p+2));//0 
       printf("%d\n", *(p+3));//0 
       free(p);
       system("pause"); 
}



#include <stdio.h>
#include <stdlib.h>

main(){
       int i = 3;
       int* p = &i;
       int** q = &p;
       int*** l = &q;
       
       printf("i的值为%d\n", ***l);//3 
       //l表示取出l内存空间的值,*l表示取出l内存空间值的内存空间的值,**l表示取出l内存空间值的内存空间值的内存空间的值。 
       system("pause"); 
}
复制代码
复制代码
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
main(){
       printf("请输入学生人数:");
       int count;
       scanf("%d", &count);
       //int b在C中是系统在栈中申请内存,系统负责回收的。
       // malloc申请的是堆内存由程序员释放。 
       //栈内存只有2M,连续的内存空间,先进来的后释放。 堆的内存和物理内存一样大,
       //堆不连续是用链表表示的,链表查找比连续的麻烦但是增删比连续的快。 
       //C是面向过程的没有对象概念所以没有new,malloc就是new。
       //静态内存是栈上分配的,编译的时候就已经分配好了,程序的怎个运行期间都存在,
       //例如全局变量和static变量。动态内存是堆上malloc或者new分配的。 
       
       
       //根据学生人数去动态申请堆内存 , 
       int* p = malloc(sizeof(int) * count);//count个int类型 
       
       int i;
       for(i = 0; i < count; i++){
             printf("请输入第%d个学生学号:", i);
             scanf("%d", p+i);
       }
       
       printf("请输入新增的学生人数:");
       int newCount;
       scanf("%d", &newCount);
       p = realloc(p, sizeof(int) * (count + newCount));//扩充p内存 
       
       for(i = count; i < count + newCount; i++){
             printf("请输入第%d个学生学号:", i);
             scanf("%d", p+i);
       }
       
       for(i = 0; i < count + newCount; i++){
            printf("第%d个学生的学号是:%d\n", i, *(p+i)); 
       }
       system("pause"); 
}
复制代码

 


本文转自农夫山泉别墅博客园博客,原文链接:http://www.cnblogs.com/yaowen/p/4985285.html,如需转载请自行联系原作者


相关文章
|
4月前
|
缓存 编解码 Android开发
Android内存优化之图片优化
本文主要探讨Android开发中的图片优化问题,包括图片优化的重要性、OOM错误的成因及解决方法、Android支持的图片格式及其特点。同时介绍了图片储存优化的三种方式:尺寸优化、质量压缩和内存重用,并详细讲解了相关的实现方法与属性。此外,还分析了图片加载优化策略,如异步加载、缓存机制、懒加载等,并结合多级缓存流程提升性能。最后对比了几大主流图片加载框架(Universal ImageLoader、Picasso、Glide、Fresco)的特点与适用场景,重点推荐Fresco在处理大图、动图时的优异表现。这些内容为开发者提供了全面的图片优化解决方案。
157 1
|
11月前
|
存储 前端开发 Java
Android MVVM架构模式下如何避免内存泄漏
Android采用MVVM架构开发项目,如何避免内存泄漏风险?怎样避免内存泄漏?
269 1
|
存储 开发工具 Android开发
构建高效的Android应用:从内存管理到用户界面
【5月更文挑战第29天】 随着智能手机的普及,Android应用的开发变得日益重要。然而,许多开发者在开发过程中忽视了性能优化,导致应用运行缓慢,用户体验差。本文将深入探讨如何通过有效的内存管理和用户界面优化,提升Android应用的性能。我们将详细介绍内存泄漏的原因和解决方案,以及如何使用Android的新特性来创建流畅的用户界面。无论你是新手还是经验丰富的开发者,都可以从本文中获得有用的技巧和建议。
|
10月前
|
监控 Java Android开发
深入探讨Android系统的内存管理机制
本文将深入分析Android系统的内存管理机制,包括其内存分配、回收策略以及常见的内存泄漏问题。通过对这些方面的详细讨论,读者可以更好地理解Android系统如何高效地管理内存资源,从而提高应用程序的性能和稳定性。
369 16
|
9月前
|
监控 Java Android开发
深入探索Android系统的内存管理机制
本文旨在全面解析Android系统的内存管理机制,包括其工作原理、常见问题及其解决方案。通过对Android内存模型的深入分析,本文将帮助开发者更好地理解内存分配、回收以及优化策略,从而提高应用性能和用户体验。
|
10月前
|
Android开发 开发者
Android性能优化——内存管理的艺术
Android性能优化——内存管理的艺术
|
Java 测试技术 Android开发
Android性能测试——发现和定位内存泄露和卡顿
本文详细介绍了Android应用性能测试中的内存泄漏与卡顿问题及其解决方案。首先,文章描述了使用MAT工具定位内存泄漏的具体步骤,并通过实例展示了如何分析Histogram图表和Dominator Tree。接着,针对卡顿问题,文章探讨了其产生原因,并提供了多种测试方法,包括GPU呈现模式分析、FPS Meter软件测试、绘制圆点计数法及Android Studio自带的GPU监控功能。最后,文章给出了排查卡顿问题的四个方向,帮助开发者优化应用性能。
774 4
Android性能测试——发现和定位内存泄露和卡顿
|
11月前
|
编解码 Android开发 UED
构建高效Android应用:从内存优化到用户体验
【10月更文挑战第11天】本文探讨了如何通过内存优化和用户体验改进来构建高效的Android应用。介绍了使用弱引用来减少内存占用、懒加载资源以降低启动时内存消耗、利用Kotlin协程进行异步处理以保持UI流畅,以及采用响应式设计适配不同屏幕尺寸等具体技术手段。
156 2
|
监控 Java Android开发
探究Android应用开发中的内存泄漏检测与修复
在移动应用的开发过程中,优化用户体验和提升性能是至关重要的。对于Android平台而言,内存泄漏是一个常见且棘手的问题,它可能导致应用运行缓慢甚至崩溃。本文将深入探讨如何有效识别和解决内存泄漏问题,通过具体案例分析,揭示内存泄漏的成因,并提出相应的检测工具和方法。我们还将讨论一些最佳实践,帮助开发者预防内存泄漏,确保应用稳定高效地运行。
181 24