我试图释放数据的某些部分,并用特定的整数值标记其休息,以表明它不是有效的指针.(不是数组)
I am trying to free some part of data and mark its rest with specific integer value to indicate that it is not a valid pointer. (Not an array)
bool isPointerValid(void *vd)
{
if (*(int*)vd == 22049929)
{
return false;
}
return true;
}
void operator delete(void *vd)
{
if (!isPointerValid(vd))
{
//DOUBLE DELETION
throw;
}
realloc(vd, 4);
*((int*)vd) = 22049929;
}
我正在重新分配数据,而不是完全释放它们。并将特定的整数值写入该重新分配的数据。这样,我可以检查一个指针,该指针在查看其前4个字节时被删除或不删除。
我正在做减小尺寸的操作以节省内存。
但是这里有两个不同的问题:
1- REALLOC功能并不是要在重新分配后要具有相同位置的情况。即使在该位置有足够的空间可容纳4个字节。我们知道我们的初始数据是否大于4个字节,必须有足够的空间。
2-某些数据类型可能小于4个字节。在该位置的内存中,内存中的4个字节不足。当您将这些小数据类型存储在容器中时,它经常发生。我们可以通过将每个数据类型重新定位到1个字节来解决,但是将一个字节数据与有效的指针的第一个字节匹配的可能性太大。
最好的前哨值是(void*) nullptr
。发明自己的哨兵正在问问题。
相关文章:
- 使用无符号字符数组有效存储内存
- 有效地计算多维数组的累积和?
- 计算数组重复次数的组合的有效算法,加起来达到给定的总和
- C++ 返回指向函数内定义的静态数组的指针是否有效?
- 声明后,gcc 的动态大小数组是否与标准数组有效相同?
- 如何有效地找到数组中三元组和的最小差异?
- 如何在C++中有效地将数字值重新分配给字符数组
- 如何有效地收集给定数组中的重复元素?
- 创建字符串数组的有效方法
- 如何在C++中有效地将数组移动到向量
- 在递归函数中更有效地创建对象和对象数组?C++
- 张量(多维数组)是树前瞻数据的有效存储类型吗?
- 有效地展平结构数组
- cpp 数组 - 分配常量索引有效,而非常量索引不起作用
- 如何在整数数组中有效地存储大量数字?C++
- 有效地从文本文件中读取带有字符串索引的大型二维数组(矩阵)
- 如何有效地使用 std::async 对指针数组执行操作
- 声明数组>> int arr[] 时出错;在C++(虽然在 Java 中有效)?
- 如何有效地用枚举填充 2D std::数组
- 这是arduino和C++的有效数组吗