glibc 检测到内存库拉
glibc detected memory curruption
我必须经常工作和创建矩阵(我必须使用指针),所以我在C++中创建了一个函数来为它们分配空间,并确保最后一个值设置为 NULL。在特定情况下,应用程序会丢弃此错误(检测到 glibc:内存压缩)。这是代码:
template<typename T> T *allocate(int size) {
T *temp = new T[size];
temp[size] = (T) NULL;
return temp;
}
这有效:
unsigned char *tmp = allocate <unsigned char> (10);
但是这个会删除错误:
unsigned char **tmp = allocate <unsigned char *> (10);
这相当于:
unsigned char **tmp = new unsigned char *[10];
tmp[10] = (unsigned char *) NULL;
这很好。为什么它会给我这个错误?
更新:感谢您的回复。我太瞎了。这是一个错误。但是崩溃的问题来自代码的另一部分,但也因为我在数组的分配空间之外添加了 NULL。
你不能这样做:
temp[size] = (T) NULL;
在这种情况下,大小是在您分配的最后一个内存位置之后索引内存位置,为此进行更改:
temp[size-1] = (T) NULL;
temp[size] = (T) NULL;
正在分配给未分配的内存。
T *temp = new T[size];
从温度[0]分配到温度[大小-1]
相关文章:
- 如何在源代码中使用执行策略检测 C++17 的扩展内存管理算法的可用性?
- 检测到由于操作系统内存不足而导致子进程终止
- 如何检测内存分配/空闲错误的对象?
- C++ 内存损坏检测
- 保护类内存阵列以检测分段错误
- 从检测到 glibc 正常退出 - malloc():内存损坏
- 编译器如何检测内存损坏
- 如何在 Linux/MacOs 平台中检测到内存泄漏?
- 为什么 heob 在 QCreator 生成的代码中将这些检测为内存泄漏
- C++默认参数通过_CrtMemDifference屏蔽内存泄漏检测
- Valgrind检测到琐碎代码的未列出的堆内存使用
- Valgrind检测到OpenGL内存泄漏
- CRT 检测到应用程序在堆缓冲区(新建/删除)类结束后写入内存
- 通用 Windows 平台上的内存泄漏检测
- Valgrind和Qemu-无法检测到内存泄漏
- gcc-如何检测基于指针的内存访问
- 了解Microsoft的内存泄漏检测输出
- 通过附加到进程进行内存泄漏检测
- 使用内存清理器检测libc++
- 检测到内存泄漏