如何保护类外用户可以修改的指针地址?C++

How to protect a pointer's address that an user outside the class can modify? c++

本文关键字:修改 指针 地址 C++ 用户 何保护 保护      更新时间:2023-10-16

我有一个缓冲区,它将发送指针直接读取数据以进行零复制。但是,如何保护地址指针免受类外代码的影响呢?

 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)