在 C++ 中处理巨大的多维数组

2023-12-11

我正在用 C++ 设计一款类似于 Minecraft 的游戏,它在内存中保存了大量的地形数据。一般来说,我想在内存中存储一​​个数组,即[5][4][5][50][50][50]。这还不错,因为它相当于大约 100mb 的虚拟内存,而我的结构只有大约 8 个字节。

但是,我无法找出处理此问题的最佳方法。我确实希望它位于虚拟内存中,但显然不在堆栈中。我一直犯一些在堆栈上创建这个数组的错误,导致堆栈溢出。我想做的事情如下。这只是我拼凑在一起的代码,为您提供我正在做的事情的示例,我的机器上有具有正确语法的代码,我只是不想让帖子变得混乱。

typedef struct modelBlock
{
    // Information about the blocks
} BLOCK;

typedef struct modelGrid
{
    bool empty;

    BLOCK blocksArray[50][50][50];

} GRID;


class Parent
{
     Child* child;
     Parent(void);
}

Parent::Parent()
{
    Child c;
    child = &c;
}

class Child
{
     GRID grids[5][4][5];
}

但是,每次执行此操作时,都会导致堆栈溢出(适当的网站选择,对吧?)。我尝试使用基于指针的数组,但在数据超出其范围之外丢失时遇到了很多麻烦。

如果有人能给我一些关于如何将数据存储在堆而不是堆栈上的见解,或者如果我应该使用其他方式创建数组,我将非常感谢您的帮助。由于开销,我想避免使用向量,尽管我不确定它有多大。


Use 升压::多数组

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

在 C++ 中处理巨大的多维数组 的相关文章

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

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

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

    我正在使用 Entity Framework 5 并且有以下实体 public class User public Int32 Id get set public String Username get set public virtual
  • 为什么 GCC 不允许我创建“内联静态 std::stringstream”?

    我将直接前往 MCVE include
  • 在 NumPy 中获取 ndarray 的索引和值

    我有一个 ndarrayA任意维数N 我想创建一个数组B元组 数组或列表 其中第一个N每个元组中的元素是索引 最后一个元素是该索引的值A 例如 A array 1 2 3 4 5 6 Then B 0 0 1 0 1 2 0 2 3 1 0
  • -webkit-box-shadow 与 QtWebKit 模糊?

    当时有什么方法可以实现 webkit box shadow 的工作模糊吗 看完这篇评论错误报告 https bugs webkit org show bug cgi id 23291 我认识到这仍然是一个问题 尽管错误报告被标记为RESOL
  • 如何连接重叠的圆圈?

    我想在视觉上连接两个重叠的圆圈 以便 becomes 我已经有部分圆的方法 但现在我需要知道每个圆的重叠角度有多大 但我不知道该怎么做 有人有主意吗 Phi ArcTan Sqrt 4 R 2 d 2 d HTH Edit 对于两个不同的半
  • 对类 static constexpr 结构的未定义引用,g++ 与 clang

    这是我的代码 a cp p struct int2 int x y struct Foo static constexpr int bar1 1 static constexpr int2 bar2 1 2 int foo1 return
  • 重载 (c)begin/(c)end

    我试图超载 c begin c end类的函数 以便能够调用 C 11 基于范围的 for 循环 它在大多数情况下都有效 但我无法理解和解决其中一个问题 for auto const point fProjectData gt getPoi
  • 结构体的内存大小不同?

    为什么第一种情况不是12 测试环境 最新版本的 gcc 和 clang 64 位 Linux struct desc int parts int nr sizeof desc Output 16 struct desc int parts
  • 为什么这个字符串用AesCryptoServiceProvider第二次解密时不相等?

    我在 C VS2012 NET 4 5 中的文本加密和解密方面遇到问题 具体来说 当我加密并随后解密字符串时 输出与输入不同 然而 奇怪的是 如果我复制加密的输出并将其硬编码为字符串文字 解密就会起作用 以下代码示例说明了该问题 我究竟做错
  • 两个类可以使用 C++ 互相查看吗?

    所以我有一个 A 类 我想在其中调用一些 B 类函数 所以我包括 b h 但是 在 B 类中 我想调用 A 类函数 如果我包含 a h 它最终会陷入无限循环 对吗 我能做什么呢 仅将成员函数声明放在头文件 h 中 并将成员函数定义放在实现文
  • LINQ:使用 INNER JOIN、Group 和 SUM

    我正在尝试使用 LINQ 执行以下 SQL 最接近的是执行交叉联接和总和计算 我知道必须有更好的方法来编写它 所以我向堆栈团队寻求帮助 SELECT T1 Column1 T1 Column2 SUM T3 Column1 AS Amoun
  • C# 动态/expando 对象的深度/嵌套/递归合并

    我需要在 C 中 合并 2 个动态对象 我在 stackexchange 上找到的所有内容仅涵盖非递归合并 但我正在寻找能够进行递归或深度合并的东西 非常类似于jQuery 的 extend obj1 obj2 http api jquer
  • 对于某些 PDF 文件,LoadIFilter() 返回 -2147467259

    我正在尝试使用 Adob e IFilter 搜索 PDF 文件 我的代码是用 C 编写的 我使用 p invoke 来获取 IFilter 的实例 DllImport query dll SetLastError true CharSet
  • 为什么C++代码执行速度比java慢?

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

    我对 C 有点陌生 我有一个编码作业 很多文件已经完成 但我注意到 VS2012 似乎有以下语句的问题 typedef std uint32 t identifier 不过 似乎将其更改为 typedef uint32 t identifi
  • MySQL Connector C/C API - 使用特殊字符进行查询

    我是一个 C 程序 我有一个接受域名参数的函数 void db domains query char name 使用 mysql query 我测试数据库中是否存在域名 如果不是这种情况 我插入新域名 char query 400 spri
  • php 数组中出现意外的 json 输出结构

    我正在尝试转换动态数据 如何从 PHP 获取此 JSON JSON 122240cb 253c 4046 adcd ae81266709a6 item 0 3 这就是我所做的 但它不起作用 PHP json array 122240cb 2
  • 使用 WGL 创建现代 OpenGL 上下文?

    我正在尝试使用 Windows 函数创建 OpenGL 上下文 现代版本 基本上代码就是 创建窗口类 注册班级 创建一个窗口 choose PIXELFORMATDESCRIPTOR并设置它 创建旧版 OpenGL 上下文 使上下文成为当前

随机推荐

  • 第 5 次迭代后阶乘循环结果不正确

    我目前正在学习微积分预科课程 并认为我会编写一个快速程序 给出阶乘 10 的结果 在测试它时 我注意到在第 5 次迭代后我得到了不正确的结果 然而 前 4 次迭代是正确的 public class Factorial public stat
  • 使用 C# 中的正则表达式返回包含匹配项的整行

    假设我有以下字符串 string input Hello world n Hello foobar world n Hello foo world n 我有一个正则表达式模式 由我正在编写的工具的用户指定 foobar 我想返回每行的整行i
  • 获取嵌套字典中所有键的列表

    我想获取包含列表和字典的嵌套字典中所有键的列表 我目前有这段代码 但似乎缺少向列表添加一些键 并且还重复添加了一些键 keys list def get keys d or l keys list if isinstance d or l
  • NSDate initWithString

    将 Xcode 更新到版本 4 2 后 我在当前项目中收到以下警告 警告 NSDate 可能不会响应 initWithString 我必须做什么 此方法仅在 Mac OSX 页面的文档中注明 在 iOS 中未注明 我不清楚为什么苹果有不同的
  • 如何将索引处的行插入排序的ag-grid

    我有一个启用排序的网格设置 每行都有一个重复按钮 复制行时 我想在复制的行下方插入新行 这适用于默认排序 但如果您对列进行排序 例如状态 它会将该行随机插入到网格中 从而很难找到 我注意到网格在保存过程中的某个时候会进行排序 但在它得到分配
  • android httpclient 和 utf-8

    我正在尝试连接到一个网络服务 我的查询中保存了一些数据 不好的是 这些数据包含utf 8字符 这会出现问题 如果我只是使用普通字符串调用 HttpGet 则会出现 非法字符 异常 所以我用谷歌搜索并尝试了一些 utf 8 魔法 HttpCl
  • jQuery 按类对列表项进行分组

    我有一个具有相同类列表项的无序动态列表 我想将相同的类列表项分组到主 ul 中的一个 ul 中 如何对相同类别的列表项进行分组 我想转换下面的动态列表 ul li class a1 Some Content li li class a1 S
  • 使用c#搜索文本文件并显示行号和包含搜索关键字的完整行

    我需要帮助使用 c 搜索文本文件 日志文件 并显示行号和包含搜索关键字的完整行 这是对以下内容的轻微修改 http msdn microsoft com en us library aa287535 28VS 71 29 aspx int
  • 如何为多个进程缓存 eToken PIN

    我有一个 NET c 应用程序 它使用 我的 证书存储中的 x509Certificate2 最初来自 eToken 设备 当我使用证书 解密数据或将其用作 Web 请求的客户端证书 时 它会询问设备 PIN 一次 之后 它会被缓存 用户不
  • Glassfish V3.x 和远程独立客户端

    连接到a绝对没问题ActiveMQ作为独立客户端 您唯一需要做的就是添加activemq all 5 4 1 jar就这样 prop put Context SECURITY AUTHENTICATION system prop put C
  • 仅接受使用 scanf 输入的数值

    如何确保用户仅输入数字值而不是字母数字或任何其他字符 另外 要寻找什么来插入不正确输入的错误消息 include
  • Laravel 5.5:会话不起作用

    我在用着Session put client id 设置一个会话值 该值保留在控制器内和应用程序内的其他位置 但我通过 Vue 的 API 路由调用的控制器除外 我已经进行了编辑 driver gt env SESSION DRIVER d
  • 如何使用 C 以编程方式在 Windows 7 上设置 IP 地址

    我正在开发一个需要能够设置 IP 地址的应用程序 使用命令提示符 Netsh接口IP设置地址 它可以工作 但是 c 中的等效项是什么 Thanks 我认为您需要 AddIPAddress API 参考添加IP地址函数MSDN 文档中有一个很
  • 将word文档插入另一个word文档而不改变格式VBA

    首先 我通过用户窗体上的按钮将 Word 文档 doc1 复制到新的 Word 文档 并采用其格式 其次 我在这个word文档 填充有doc1 的末尾插入一个新的word文档doc2 doc1和doc2有文本和表格以及各种颜色 每次我按下另
  • JSP/HTML 页面到 PDF 的转换 [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 如何将 JSP HTML 文件转换为 PDF 我想将网页的特定部分转换为 PDF 文件 是否可以 是的 好好看看展位阿帕奇FOP and iText
  • 如何在 Excel 中查找拼写错误的文本之间的匹配项?

    我有两列数据 其中有一百个名字 我需要找到匹配项 问题是第二列上的名称与第一列上的名称不完全相同 很难用一百个名字来匹配他们 excel中是否有任何公式至少可以给出数据的公差 例如 Setyadi 与 Setiadi 或 Tak Jelan
  • 时间戳/日期作为 cassandra 列族/hector 的关键

    我必须创建并查询一个复合键为 timestamp long 的列族 还 查询时我想触发时间戳范围查询 例如 xxx 和 yyy 之间的时间戳 这可能吗 目前我正在做一些非常有趣的事情 我知道这是不正确的 我为给定范围创建带有时间戳字符串的键
  • Codeigniter simple_query 与查询生成器(插入、更新和删除)

    根据文档 simple query不会返回任何数据库结果集 也不会设置查询计时器 或编译绑定数据 或存储查询以进行调试 正如在我的 CodeIgniter 中一样 我使用 CI 提供的查询生成器来生成查询 那么 这些用于插入 更新和删除的查
  • 从非 UI 线程弹出对话框

    我正在开发一个面向团体的网络应用程序 问题是 当我要加入一个组时 它首先检查该组是否安全 如果是 它会要求输入用户名和密码 获得组安全性可能需要几秒钟 因此我为整个过程生成一个新线程 我想弹出一个对话框 以防该组需要安全性 我认为这可能与后
  • 在 C++ 中处理巨大的多维数组

    我正在用 C 设计一款类似于 Minecraft 的游戏 它在内存中保存了大量的地形数据 一般来说 我想在内存中存储一 个数组 即 5 4 5 50 50 50 这还不错 因为它相当于大约 100mb 的虚拟内存 而我的结构只有大约 8 个