使用指针访问参数接收的结构中的元素时内存泄漏
Memory Leakage when accessing, using pointer, elements from a struct received by argument
一点上下文:我最近开发了一个通用函数,根据显示图像的哪些部分发生了更改来更新显示图像。为此,我收到一个已知的结构作为参数,其成员是字符数组(显示行(,并将其与当前显示的信息进行比较,以便更新必要的信息,从而提高性能。它是arm cortex-m0的嵌入式系统,以备不时之需。下面是结构的代码段。
struct displayLines {
char firstLine[13];
char secondLine[13];
char thirdLine[13];
char fourthLine[13];
char fivethLine[13];
char sixthLine[13];
};
typedef struct displayLines st_displayLines;
基于该结构,我使用一个指针,用第一个元素地址初始化,并用它来访问整个结构数据(所有行(。下面的代码片段显示了我如何初始化指针。
void updateScreen(st_displayLines st_toDisplay)
{
char *ptrtoUpdate = st_toDisplay.firstLine;
char *ptrDisplayed = st_currentlyDisplayed.firstLine;
//Here is the update code which consumes the pointers.
}
在使用相同的指针变量进行操作(对其使用算术运算(并消耗其数据后,我只从函数返回,而不使用对指针变量调用free操作。
最后的问题是:
这是内存泄漏吗?或者,一旦我在函数范围之外,用于创建指针的分配内存就会被释放?
如果它是一个泄漏,那么每次调用这个函数时,它会为内存中的每个指针变量保留1个字节吗?如果我只有10字节的可用内存,那么在函数的第6次调用时,我的程序会崩溃吗?
当用malloc
分配的内存不再有指针指向它并且内存没有空闲时,就会发生内存泄漏。正如您所展示的,代码没有分配内存,因此没有泄漏。
简单地使用指针变量与使用int
没有什么不同。变量在声明时处于作用域内,在封闭复合语句结束时超出作用域。所以没有必要释放任何东西。
相关文章:
- 使用不带参数的函数访问结构元素
- 访问类lintalizer列表中的结构元素
- 如何为 c++ 的不同变量类型的结构元素创建动态数组?
- 结构元素名称要 cout?
- C++结构元素(成员变量)的数量
- 如何在类中声明静态 const 结构元素
- 在地图中搜索结构元素
- 在C++中传递结构数组 - 被调用函数中不存在结构元素,如何正确传递向量?
- 结构元素C 的枚举
- 将结构元素地址设置为C 中的null(单链接列表)
- OPENCV:为击中创建一个正方形结构元素
- 如何将结构元素传递给异步线程
- C - 基于另一个元素对结构元素进行排序
- 无法从传递到 pthread 的结构中访问结构元素
- 矢量的打印结构元素
- C结构元素对齐(ansi)
- 用3x3结构元素进行两次形态扩张,等于用6x6结构元素进行一次形态扩张
- 创建结构元素的动态数组,然后创建该结构的动态数组.C++
- 访问地图数据结构中的结构元素
- 尝试在文本文件中添加结构元素而不覆盖它