如何在c中找到内存分配的最大限制

2024-02-17

我想确定我可以在计算机中分配的最大内存限制是多少。这是我为此任务编写的代码:

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

int main() {
    int j;
    int *primes;
    int i ;

    int limit = 2147483647;

    primes = malloc(sizeof(int) * limit);
    for (i = 0; i < limit; i++)
    {
        primes[i] = 1;
    }
    return 0;
}

如何确定在没有命中和尝试的情况下可以分配多少内存?我在这个例子中分配了最大 int 大小。但程序崩溃了。 本例中实际分配了多少内存?


malloc()允许失败,在这种情况下它返回一个 NULL 指针不分配任何内存。它始终是一个全有或全无分配。它要么成功并分配所请求大小的完整内存块,要么失败,返回 NULL 指针而不分配单个字节。

至于知道有多少内存可用 - 这实际上取决于环境:您在什么操作系统中运行它,是 16 位、32 位、64 位内存架构吗?

例如,如果您在 Windows 10 上运行,则可以使用GlobalMemoryStatusEx()设施(请参阅MSDN:GlobalMemoryStatusEx() https://msdn.microsoft.com/en-us/library/windows/desktop/aa366589(v=vs.85).aspx了解详情)。

Linux,OTOH,提供了一个简洁的sysconf()检索相似信息的方法。参考这一页 http://pubs.opengroup.org/onlinepubs/009695399/functions/sysconf.html更多细节。

即使您的操作系统是 64 位,也并不一定意味着您的操作系统应用可以访问超过一定限制的内容。例如,Windows 7 64 位仅允许您在应用程序代码中寻址最多 8GB 的​​内存,即使完整的虚拟内存空间为 16TB。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在c中找到内存分配的最大限制 的相关文章

  • 在 xaml 中编写嵌套类型时出现设计时错误

    我创建了一个用户控件 它接受枚举类型并将该枚举的值分配给该用户控件中的 ComboBox 控件 很简单 我在数据模板中使用此用户控件 当出现嵌套类型时 问题就来了 我使用这个符号来指定 EnumType x Type myNamespace
  • 没有特殊字符的密码验证器

    我是 RegEx 的新手 已经进行了大量搜索 但没有找到任何具体内容 我正在编写一个验证密码字符串的正则表达式 可接受的字符串必须至少具有 4 种字符类型中的 3 种 数字 小写字母 大写字母 特殊字符 我对包含有一个想法 也就是说 如果这
  • 根据属性的类型使用文本框或复选框

    如果我有这样的结构 public class Parent public string Name get set public List
  • 在一个数据访问层中处理多个连接字符串

    我有一个有趣的困境 我目前有一个数据访问层 它必须与多个域一起使用 并且每个域都有多个数据库存储库 具体取决于所调用的存储过程 目前 我只需使用 SWITCH 语句来确定应用程序正在运行的计算机 并从 Web config 返回适当的连接字
  • 如何在 Cassandra 中存储无符号整数?

    我通过 Datastax 驱动程序在 Cassandra 中存储一些数据 并且需要存储无符号 16 位和 32 位整数 对于无符号 16 位整数 我可以轻松地将它们存储为有符号 32 位整数 并根据需要进行转换 然而 对于无符号 64 位整
  • std::list 线程push_back、front、pop_front

    std list 线程安全吗 我假设不是这样 所以我添加了自己的同步机制 我认为我有正确的术语 但我仍然遇到问题 每个函数都由单独的线程调用 Thread1 不能等待 它必须尽可能快 std list
  • free 和 malloc 在 C 中如何工作?

    我试图弄清楚如果我尝试 从中间 释放指针会发生什么 例如 看下面的代码 char ptr char malloc 10 sizeof char for char i 0 i lt 10 i ptr i i 10 ptr ptr ptr pt
  • 从经典 ASP 调用 .Net C# DLL 方法

    我正在开发一个经典的 asp 项目 该项目需要将字符串发送到 DLL DLL 会将其序列化并发送到 Zebra 热敏打印机 我已经构建了我的 DLL 并使用它注册了regasm其次是 代码库这使得 IIS 能够识别它 虽然我可以设置我的对象
  • C++ 多行字符串原始文字[重复]

    这个问题在这里已经有答案了 我们可以像这样定义一个多行字符串 const char text1 part 1 part 2 part 3 part 4 const char text2 part 1 part 2 part 3 part 4
  • 需要帮助优化算法 - 两百万以下所有素数的总和

    我正在尝试做一个欧拉计划 http projecteuler net问题 我正在寻找 2 000 000 以下所有素数的总和 这就是我所拥有的 int main int argc char argv unsigned long int su
  • 如何正确取消引用然后删除 JavaScript 对象?

    我想知道从内存中完全取消引用 JavaScript 对象的正确方法 确保删除时不会在内存中悬空 并且垃圾收集器会删除该对象 当我看这个问题时在 JavaScript 中删除对象 https stackoverflow com questio
  • C# 列表通用扩展方法与非通用扩展方法

    这是一个简单的问题 我希望 集合类中有通用和非通用方法 例如List
  • 两个静态变量同名(两个不同的文件),并在任何其他文件中 extern 其中一个

    在一个文件中将变量声明为 static 并在另一个文件中进行 extern 声明 我认为这会在链接时出现错误 因为 extern 变量不会在任何对象中看到 因为在其他文件中声明的变量带有限定符 static 但不知何故 链接器 瑞萨 没有显
  • WcfSvcHost 的跨域异常

    对于另一个跨域问题 我深表歉意 我一整天都在与这个问题作斗争 现在已经到了沸腾的地步 我有一个 Silverlight 应用程序项目 SLApp1 一个用于托管 Silverlight SLApp1 Web 的 Web 项目和 WCF 项目
  • x:将 ViewModel 方法绑定到 DataTemplate 内的事件

    我基本上问同样的问题这个人 https stackoverflow com questions 10752448 binding to viewmodels property from a template 但在较新的背景下x Bind V
  • LINQ:使用 INNER JOIN、Group 和 SUM

    我正在尝试使用 LINQ 执行以下 SQL 最接近的是执行交叉联接和总和计算 我知道必须有更好的方法来编写它 所以我向堆栈团队寻求帮助 SELECT T1 Column1 T1 Column2 SUM T3 Column1 AS Amoun
  • 复制目录下所有文件

    如何将一个目录中的所有内容复制到另一个目录而不循环遍历每个文件 你不能 两者都不Directory http msdn microsoft com en us library system io directory aspx nor Dir
  • 在 WPF 中使用 ReactiveUI 提供长时间运行命令反馈的正确方法

    我有一个 C WPF NET 4 5 应用程序 用户将用它来打开某些文件 然后 应用程序将经历很多动作 读取文件 通过许多插件和解析器传递它 这些文件可能相当大 gt 100MB 因此这可能需要一段时间 我想让用户了解 UI 中发生的情况
  • 相当于Linux中的导入库

    在 Windows C 中 当您想要链接 DLL 时 您必须提供导入库 但是在 GNU 构建系统中 当您想要链接 so 文件 相当于 dll 时 您就不需要链接 为什么是这样 是否有等效的 Windows 导入库 注意 我不会谈论在 Win
  • 为什么C++代码执行速度比java慢?

    我最近用 Java 编写了一个计算密集型算法 然后将其翻译为 C 令我惊讶的是 C 的执行速度要慢得多 我现在已经编写了一个更短的 Java 测试程序和一个相应的 C 程序 见下文 我的原始代码具有大量数组访问功能 测试代码也是如此 C 的

随机推荐

  • 解析没有 .proto 文件的 Protocol-Buffers

    作为安全项目的一部分 我正在对 Android 应用程序进行逆向工程 我的第一步是发现应用程序和服务器之间交换的协议 我发现正在使用的协议是协议缓冲区 鉴于 protobuf 的性质 需要原始 proto 文件才能反序列化 protobuf
  • 如何使用 Vue JS 设置嵌套数组的增量计数器

    我使用 Vue JS 的数组深度为两层 我需要一个从 0 开始的索引 并为顶部数组中的每个项目递增 这是我的 HTML div div
  • 使用DDD,如何实现批处理?

    我的逻辑包括从一个系统中选择大量记录 执行多个转换 基于业务规则 并将它们插入到另一个系统中 将这些记录中的每一个实例化为对象 对它们执行转换 然后将所有这些对象插入到另一个系统中 这似乎对性能 和内存 产生了很大的影响 在 DDD 中实现
  • 通过 jQuery ajax 提交表单,包括文件上传

    HTML
  • WP8 - 此软件包使用的应用程序名称尚未为此应用程序保留

    我正在将 Windows Phone 8 应用程序提交到应用程序商店 当我单击Review And Submit我收到错误 This package is using an app name that hasn t been reserve
  • 在 Spacy 中基于现有英语模型实现自定义 POS Tagger:NLP - Python

    我正在尝试使用下面的代码重新训练 spacy 中现有的 POS Tagger 以显示某些错误分类单词的正确标签 但它给了我这个错误 警告 未命名向量 这不允许多个向量模型 待加载 形状 0 0 from spacy vocab import
  • 如何在不生成整数的情况下找到斐波那契数的前 k 位数字?

    我必须找到斐波那契数列 2 10 6 以内的所有斐波那契数的前 k 位数字 显然 我们不能将斐波那契数列的值存储在任何变量中 即使计算所有斐波那契数本身也需要大量的计算时间 那么 有没有办法只得到斐波那契数的前k位而不生成整个数呢 由于您只
  • ajax成功返回0

    我需要一点帮助 我设计了我的自定义ajax 函数 这是一个简单的表单 输入 5 个值进行验证 然后通过 ajax 将数据发送到 php 函数 该函数通过电子邮件发送这些详细信息 成功后 将向用户显示弹出窗口以进行确认 我已经应用了验证 并且
  • 如何在启动时启动 Docker for Mac 守护进程?

    我想让 Docker for Mac 在启动时启动 而不是在登录时启动 我该怎么做呢 我想创建一个LaunchDaemon 我只是不知道要启动什么程序 我看到的所有例子似乎都使用docker machine定义一个虚拟机 但文档现在说doc
  • 简短的Python代码来表达“选择较低的值”?

    我的意思是 我正在寻找返回较低值的非常短的代码 例如 a 1 2 3 4 5 6 7 8 9 10 b 1 2 3 4 5 6 7 8 len a 10 len b 8 if fill this in print lesser value
  • 使用 QNetworkAccessManager 的 post() 方法上传文件

    我在使用 Qt 应用程序时遇到一些问题 特别是 QNetworkAccessManager 类 我正在尝试使用 QNetworkAccessManager 的 post 方法执行二进制文件的简单 HTTP 上传 文档指出我可以为 post
  • 在标头中发送会话密钥与仅 HTTP cookie

    我想知道在我的系统中发送会话密钥的最佳选择 在我的系统中 有一个 API 服务器可供 Web 浏览器 命令行界面和桌面应用程序使用 它通过查看用户的身份来验证用户的身份AuthorizationHTTP 标头 目前 浏览器将会话密钥存储在
  • CodeIgniter 和 SimpleTest——如何进行我的第一个测试?

    我习惯使用 LAMP PHP5 MySQL 以及带有 Xdebug 的 NetBeans 进行 Web 开发 现在我想通过学习如何使用 A 正确的测试和 B 框架来改进我的开发 所以我设置了 CodeIgniter SimpleTest 和
  • 使用模拟库在循环中进行用户输入的 Python 测试

    我正在尝试使用模拟库来测试一段代码 在此代码中 用户原始输入在 for 循环中被接受 如下所示 我已经写了测试用例test apple record可以为托盘编号提供单个用户输入值 但是 对于 for 循环中的每次迭代 它只采用与预期相同的
  • 直接管理 + Docker

    我有 Direct Admit 的 VPS 托管 有 Debian Jessie 我可以使用 ssh 现在我想使用 docker 容器安装 discourse 我应该做一些超出手册提示内容的事情吗 我是说 我对港口一无所知 例如 直接管理使
  • 获取 URL 的基本名称,然后将活动类放入导航栏

    示例链接 http localhost test page php 我有一段 JavaScript 代码 它将放置一个active导航栏的类 如果该导航栏的 url href current url 当前的 JavaScript 仅将活动类
  • 通过簇替换重新采样

    我想绘制簇 由变量定义id 从数据集中进行替换 与之前回答的问题相比 我希望选择 K 次的聚类以使每个观察重复 K 次 也就是说 我正在进行集群引导 例如 以下示例id 1两次 但重复观察id 1仅在新数据集中出现一次s 我想要所有的观察结
  • 使用平铺进行透视图像转换

    在寻找一个可以用于我计划创建的新应用程序的良好图像处理库 我将使用 C NET VS 2008 我的应用程序需要执行以下操作 在启动时加载图像并将其显示在图片框中 然后我应该能够在图片框中的任何位置选择四个点 左上 右上 左下 右下 然后
  • 这是在java中声明记录器变量的最佳方法

    我只是想知道在 java 中声明记录器变量的最佳方法是什么 以下是一些声明 1 gt private static final Logger logger Logger getLogger ServiceImpl class 2 gt pr
  • 如何在c中找到内存分配的最大限制

    我想确定我可以在计算机中分配的最大内存限制是多少 这是我为此任务编写的代码 include