无论代码长度如何,以下代码的内存要求有何不同?
How the memory requirements of the following codes are different irrespective of the code-length?
// An efficient program to randomly select a number from stream of numbers.
#include <iostream>
using namespace std;
#include <stdlib.h>
#include <time.h>
/* A program to randomly select a item from stream[0], stream[1], ..
stream[i-1]*/
int main()
{
int stream[] = { 1, 2, 3, 4 };
int n = sizeof(stream) / sizeof(stream[0]);
// Use a different seed value for every run.
srand(time(0));
cout << "Random no. selected: " << stream[(rand() % n)] << "n";
return 0;
}
上面的C++代码需要从 2.9 到的内存...(某物(MB 或更大,达到 3.04。(某物(MB 或更大。
并考虑以下 C 代码:
/* An efficient program to randomly select a number from
stream of numbers.*/
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
/* A function to randomly select a item from stream[0], stream[1], ..
stream[i - 1]*/
int selectRandom(int x)
{
static int res; // The resultant random number
static int count = 0; //Count of numbers visited so far in stream
count++; // increment count of numbers seen so far
// If this is the first element from stream, return it
if (count == 1)
res = x;
else
{
// Generate a random number from 0 to count - 1
int i = rand() % count;
// Replace the prev random number with new number with 1/count
//probability
if (i == count - 1)
res = x;
}
return res;
}
// Driver program to test above function.
int main()
{
int stream[] = { 1, 2, 3, 4 };
int n = sizeof(stream) / sizeof(stream[0]);
// Use a different seed value for every run.
srand(time(NULL));
for (int i = 0; i < n; ++i)
printf("Random number from first %d numbers is %d n",
i + 1, selectRandom(stream[i]));
return 0;
}
上面的代码,需要 1.28 范围内的内存。(某物(MB 或更大,但肯定小于 2MB。
我的问题是,为什么第一个程序比第二个程序占用更多的空间,以及如何?
使用您提供的在线编辑器,内存使用情况似乎与实际分配不符。如果我用malloc(1);
编写一个程序,"内存"统计信息与执行malloc(10000000);
相同。我被引导相信这个统计数据只是可执行文件的大小。
相关文章:
- 这个指针和内存代码打印是什么?我不知道是打印垃圾还是如何打印我需要的值
- 为什么示例代码访问IUnknown中已删除的内存
- 是否值得降低我的代码的可读性,以便在出现内存不足错误时提供异常安全性?
- 以下代码执行哪种内存分配(动态或静态)?
- 为什么以下C++代码中存在内存泄漏?
- 使用 g++7 构建的代码在访问未对齐的内存时崩溃
- 无法找出我的代码中的内存泄漏
- 存储在哪个内存段(代码/数据段)类(员工)中?
- 带有 GDB 调试器的 VS 代码内存视图
- 我有一个线程 1:EXC_BAD_ACCESS(代码 = 1,地址 = 0x8)错误.我认为这是由于内存管理不好.我可以
- 如何防止使用 std::shared_ptr 的代码中的内存泄漏
- 这行代码中的内存是如何分配"int **v = new int*[n]; "的?
- 在我的以下代码中获取 MLE(内存限制错误).尝试解决 ROUND C 2019(问题 A-摆动行走)启动问题
- 我在 2D 数组的动态内存分配中遇到了一些奇怪的代码C++? 请解释一下这是什么?
- 为什么 valgrind 报告两个内存分配,而我的代码只请求一个?
- 如何使用 gcc 通过命令行限制C++代码的内存使用量?
- std::array 模板实例会占用更多的代码内存吗?
- C++OpenMP代码内存泄漏
- 如何将常量放入代码内存中
- Bug在我的代码内存操作