I wrote a simple program trying to see change in memory but there was a none. A straight horizontal line around 20% comes always, whether I run the code or not.
#include<iostream>
using namespace std;
int main()
{
int *m;
int i;
cin>>i;
m = new int[i];
}
Shouldnt memory be allocated for any value of i? And a change in Memory free be shown?
答案 0 :(得分:2)
可能有很多原因导致这种情况发生:
c=1:2:size(m,2) %// The columns we want
r=2:2:size(m,1) %// The rows we want
bsxfun(@(i,j) m(i,j),r.',c)
指针从未使用过,因此它只会删除m
运算符调用; new[]
方法就是这样; HeapAlloc
值太大,堆管理器可能无法找到此类大小的连续内存块,因此{{1} }运算符将引发i
异常,您的程序将被终止。答案 1 :(得分:2)
可能会发生一些事情......
所以,为了消除这些潜在的原因你可以写出这样的东西......
#include <iostream>
int main(int argc, char* argv[]) {
int x,y;
std::cin >> x;
int* m = new int[x];
for (int i = 0; i < x; i++)
m[i] = i;
std::cin >> y;
std::cout << m[y] << std::endl;
return 0;
}
然后,您应该能够在输入y
值之前检查内存使用情况。我不确定您正在使用的操作系统,但您应该看到图像大小和程序的常驻内存大致增加4x
个字节。
答案 2 :(得分:-1)
您为int的最大大小分配了内存。那是4个字节。现在让我们说你的RAM有8 GB。 4个字节大约是8 GB RAM的0.00000005%。