如何保护类外用户可以修改的指针地址?C++
How to protect a pointer's address that an user outside the class can modify? c++
我有一个缓冲区,它将发送指针直接读取数据以进行零复制。但是,如何保护地址指针免受类外代码的影响呢?
const void * returnReadPointer(size_t arraySize)
{
if ( arraySize < MemoryUsageInArray)
{return array + arrayIndex}
else{ return null}
}
返回指针可以访问作为缓冲区的数组。我想尝试保护它免受不当使用。
如果您将内存位置的地址交给客户端,他们可以对其进行任何操作。更改您的 API,而不是返回地址,仅提供他们需要的功能:
<your_type> readValue(size_t index)
{
// index validation etc.
.
.
return array[index];
}
使返回值成为const void *
。
const void * returnReadPointer(size_t arraySize)
您可以按如下方式更改函数原型,以防止指针被更改。
const void * const returnReadPointer(size_t arraySize)
相关文章:
- 修改函数中的指针(将另一个指针作为参数传递)
- 使用指针算法修改函数中的 2D 数组
- 结构对象的指针成员在传递给函数时被修改
- C:试图将指针值复制到另一个指针中,得到可修改的左值错误
- 如何在单个链表中交换两个节点的位置,只修改指针
- 为什么我可以通过原始指针而不是shared_ptr来修改对象
- 当原始数据是常量时,修改指针指向的位置是 UB 吗?
- 将指向矢量的指针推回,然后修改其值会影响推送的值.我应该怎么做?
- 如果指针在C++为 NULL 则修改指针
- 修改跨 fork() 的指针中的数据
- 当我修改、更改和“删除”原始指针时,是否需要指针副本
- 修改指针中的值非常慢?
- 当我要修改指针到常量整数时,为什么我的编译器不显示错误
- 修改指针在C++函数中指向的位置
- 修改指针后,在c++中取消数组的定位器
- 修改指针会导致 SIGSEGV 信号
- 当调用函数时,修改指针如何释放内存
- 如何修改指针指向的数组
- 修改指针值
- 如何通过参数修改指针