在Android中的动态分配
Dynamic allocation of memory in Android
我在我的ndk代码中动态分配内存,我尝试了以下两种方法:
1)
vector<char> buffer_;
buffer_.resize(len_);
2)
char* buffer_;
buffer_ = new char[len_];
len_
是一个很大的数字,在我的测试中,是132710400,约为130 MB。两种方式都有效!当我检查Android监视器中的内存使用量时,内存仅使用〜30MB。我知道分配的内存只是虚拟内存,并且可能不会从物理内存中分配。但是我敢肯定,我已经从此内存中写了并阅读,因此必须实际分配。我只想知道这怎么会发生?Android显示器有问题吗?还是我对Android OS不了解?或Android监视器无法跟踪本机代码使用的内存?
您可以使用命令行工具来查看您使用的过程的虚拟内存和居民内存多少。
首先,请确保您在应用程序标签中拥有的AndroidManifest.xml中有android:debuggable="true"
然后在命令行上,您可以使用ADB执行shell命令。
$ adb shell run-as com.yourdomain.yourapp /system/bin/sh -c "ps aux"
第四列显示虚拟大小,第五列显示了居民设置大小。报告的尺寸为页面,每个字节可能为4096字节。
如果新的和向量之间的MEM使用仍然存在,请添加memset(buffer_, 0, len_)
,并且应该相似。
相关文章:
- 如果C++类在类方法中具有动态分配,但没有构造函数/析构函数或任何非静态成员,那么它仍然是POD类型吗
- 使用动态分配的数组会导致代码分析发出虚假的C6386缓冲区溢出警告
- 在c++中使用动态分配的问题
- 使用递归模板动态分配的多维数组
- 对具有动态分配的内存和析构函数的类对象的引用
- 我有一个对象,它将在整个程序的持续时间内实例化,但一个类成员不会,我应该动态分配它吗?
- 访问动态分配列表中的元素
- 为什么 std::equal_to会导致动态分配?
- 调用析构函数以释放动态分配的内存
- 动态分配Q_Property变量
- 在 C++ 中搜索动态分配的数组中的出现次数
- 动态分配的聊天数组打印缺失的数据和空
- 在对象指针上调用 Delete 是否会递归删除其动态分配的成员
- 使用动态分配将 char* 复制到另一个字符**
- 使用指针在存在特征库的情况下动态分配 c++ 中的矩阵
- 二维阵列的动态分配
- 0xC0000005:访问冲突写入位置0xCDCDCDCD动态分配错误
- 在运行时为动态分配的内存输入值
- 释放动态分配的内存时是否需要执行此额外步骤
- 在Android中的动态分配