gpt4 book ai didi

c++ - 嵌入式系统中读取文件的内存碎片

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:08:30 25 4
gpt4 key购买 nike

我在带有 Linux 操作系统的嵌入式系统上有一个配置文本文件。要求是文件是文本,嵌入式系统有32 兆字节的动态内存。该应用程序。将读取文件的代码是用 C++ 编写的。

可以使用这样的方法读取文件。

#include <string>
#include <fstream>

ifstream infile ("config_file_path");
if (infile.good())
{
string line;
// Set capacity to length of the longest line.
const unsigned char maxLen = 100;

line.reserve (maxLen);

while (std::getline (infile, line))
{
// Process the data in the line.
processData (line);
}
}

堆碎片会成为这个实现的问题吗?该文件最多可以包含大约 150 行文本以供阅读。

最佳答案

很难说您的应用程序是否存在代码内存碎片问题。 (您的代码可能会增加一些碎片,但我不知道它有多重要)您可以尝试使用非标准的 malloc 库 -jemallocnedmalloctcmalloc它们可能会为您提供更好的对象布局以及转储内存布局的能力

一般方法:

检查应用程序是否可以获得“内存不足”。压力测试可能会有所帮助。 检查您的应用程序有多少可用内存以及它的碎片化程度。 如果碎片是问题 - 请尝试以下操作: heap 喜欢 LIFO 原则(删除最后创建的 block )。尝试将变量保存在堆栈中。使用专门的分配器。

如果是你的函数:

为了最小化堆压力,您可以尝试将行读入堆栈缓冲区(例如使用 fgets)

关于c++ - 嵌入式系统中读取文件的内存碎片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45775837/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com