gpt4 book ai didi

c++ - 组织从内存中读取数据的最佳方式(用于调试)c++

转载 作者:行者123 更新时间:2023-11-30 04:44:34 25 4
gpt4 key购买 nike

我不是软件工程师,这意味着我不太擅长组织我的代码,所以这个任务对你来说可能看起来很简单。

我有一个用于 32 位 ARM 设备(使用 lubuntu)的 qt c++ 应用程序。该应用程序包含一个窗口,用于调试不同嵌入式设备的外部自定义指令存储器(64 行 32 位指令)。我创建了一个函数:

bool memoRead(uint32_t *memoRowData, uint8_t memoRowNumber); 

此函数读取存储在给定行中的数据。

我想创建一个不同的函数,它使用给定的函数从内存中读取和显示 8 行的内容。示例:当我打电话时

memoDebug(0);

输出应该是存储在第0行到第7行的数据,当我调用

memoDebug(1);

输出应该是存储在第8行到第15行的数据

显而易见的方法是创建 8 个不同的 uint32_t 变量,分别读取每一行并将它们的值分配给创建的 8 个不同的变量并显示/打印它们(我已经完成并成功)。 但我想改用数组或结构之类的东西以及 for 循环中的所有内容来改进代码。将来内存大小可能会显着增加(65536 行,每次读取 64 行或更多行,而不是 8 行)。

组织数据的最佳和最有效的方法是什么?我应该如何使用它?

编辑 1:显然,当我的内存大小增加时,我会将 memoRead 函数的变量 memoRowNumber 的数据类型更改为 uint32_t

最佳答案

如果我通过评论和您在问题中提供的信息正确理解了您的问题,解决方案是创建一个选择循环并将 memoRead() 的返回值存储在一个数组中。

而不是做:

uint32_t row1 = memoRead();
uint32_t row2 = memoRead();

您可以按照评论中的建议使用循环:

//read the memo values in a loop
uint32_t array[8]; //specify size of array or make it dynamic instead of "8"
for(int i = 0; i < x; i++) {
array[i] = memoRead();
}

//print the row values in a loop
for(int i = 0; i < x; i++) {
std::cout << array[i] << "\n";
}

其中 X 是您想要读取的值,例如,如果您的数组大小是 100 而不是 8,x 会更大。

关于内存泄漏的问题,我们不会分配或释放任何不应导致任何内存泄漏的内存,请参阅:reason for memory leakage in C C++ , Risk of damaging your computer by altering memory in C++ .如果您不确定什么会导致内存泄漏,我建议您在做任何您不知道的事情之前先阅读一些文章。

据我所知,这是存储数据的最简单方法,尽管这不会跟踪您将哪些行存储在何处(可以优化)。

编辑:

要在一个循环中完成所有操作,您可以简单地:

uint32_t array[8];
for (int i = 0; i < x; i++) {
array[i] = memoRead();
std::cout << array[i] << "\n";
}

关于c++ - 组织从内存中读取数据的最佳方式(用于调试)c++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57688116/

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