有没有办法通过共享内存中的指针到达某个字节
Is there a way to reach to a certain byte via pointer in shared memory?
我有一个指针,指向共享内存的第一个字节长,为66字节长。我想创建另一个指向共享内存中某个字节的指针(我要确定字节,因为我想从用户从用户中获取此信息,例如:"您想达到哪个字节?")。是否有一种方法可以通过共享内存的指针到达某个字节?
共享内存部分无关紧要:您拥有的是指针,您想增加 n bytes:
T* p = /* pointer to whatever */;
char* nBytesIn = reinterpret_cast<char*>(p) + n;
或您的情况下,更安全:
char* byte_in_buffer(T* p, std::size_t n)
{
if (n >= 66)
throw std::out_of_range("Buffer is only 66 bytes!");
return reinterpret_cast<char*>(p) + n;
}
您需要施放到char*
,因为指针算术指示T* + n
增量sizeof(T)
;我们想通过字节增加,而char
就是该类型(大小总是1)。
(通过char*
与值相当。)
对上述程序进行修改。带有未签名字节。
typedef unsigned char byte_t;
byte_t *p = (byte_t *)/*whatever*/
byte_t return_byte(int number)
{
if(n >= 66 && n <= 0){
throw std::out_of_range("I don't know what you want");
}
byte_t *b = reinterpret_cast<byte_t*>(p)+n;
byte_t retbyte = *b;
return retbyte;
}
相关文章:
- 将字节数组转换为带有字节序问题的指针
- 向指针地址添加 20 个字节偏移量
- 将(N 个字节)无符号字符指针转换为浮点数和双 C++
- 通过浮点指针操作字节向量
- 复制后删除原始数组指针将前 3 个字节设置为 0
- 将uint64_t转换为字节时从不同大小的整数强制转换为指针
- C++向指针地址添加 4 个字节
- 将constexpr字节数组与缓冲区的一部分(指向数据的指针)进行比较
- 从字节指针读取位的差异
- 读取字节后丢失指针
- C++如何从文件中读取十六进制字节并将其存储为指针
- 以C++(Arduino)为单位比较指针到字节
- 2 个指针,0 字节相差但不相等
- Valgrind:将一个指针分配给另一个指针后丢失字节
- ::运算符 delete(指针) 返回释放的字节大小
- _declSpec(Align(16))不将指针与16个字节对齐
- 如何迫使新操作员返回的指针将是32字节对齐
- 使用C 中的字符指针从字符数组中读取字节
- visual 在指向缓冲区(字符串 " ")的空指针上使用 sizeof() C++ 以获得以字节为单位的大小?
- 有没有办法通过共享内存中的指针到达某个字节