如何将地址对齐到一个void指针
How to align an address to a void pointer?
在一个应用程序中,我遇到了这样一个问题。该方法旨在为用户提供从全局内存池中获取内存的通用接口,实现如下:
shmPool shm;
void getMemory(void* mPtr){
mPtr = &shm;
}
,但很明显mPtr
的值没有改变。如何将指针的值与未知类型指针对齐
为什么不直接返回指针,而不是使用输出参数?
void* getMemory() {
return &shm;
}
这是你的代码,修改后的调用者将收到指向shm
的指针:
shmPool shm;
void getMemory(void** mPtr){
*mPtr = &shm;
}
调用者将像这样调用这个函数:
shmPool* p;
getMemory(&p);
// now p is a valid pointer
你的问题与内存对齐无关。你的代码有一些问题,所以请对我的回答持保留态度:
- 为什么要将对象转换为
void*
?这几乎肯定是不好的。 - 我同意@Björn Pollex的观点,在这个例子中最好使用返回值而不是out参数。
mPtr
为局部变量。只更改了本地副本—为什么要更改其他变量呢?如果你想改变一个不同的指针,你必须接受一个指向它的引用或指针。
相关文章:
- 如何将指针从一个void函数传递到另一个C++
- 如何将一个 void 函数传递给另一个 void 函数?
- 定义一个 void f(void) 函数,但使用来自同一范围的变量?
- 除了调用全局删除运算符之外,删除一个void指针还能做什么呢
- 将 void 指针分配给另一个 void 指针
- 如何编写一个 void 函数,该函数将在数组中搜索值,并通过引用将该值的位置传递回 main 函数
- 如何在堆上分配一个void*阵列
- 虚幻c++使用LineTrace从Actor调用一个void
- 如何创建一个 void 数组,其大小将由用户从命令行输入指定
- 复制值从一个void **到C 复制构造函数中的另一个void **
- 返回一个void数组*
- static_cast一个void*指针可以吗
- 如何在C++中使一个void函数与另一个void功能协同工作
- 有没有任何情况下,变量可以被赋予一个void函数
- 为什么我们不能声明一个 void 类型的变量?
- 我在我的程序中添加了一个void函数,它不接受任何参数,现在我的程序在运行时只返回一个空白终端
- 如何将地址对齐到一个void指针
- 使用malloc和一个void指针复制一个临时结构
- 为什么这个快速排序的实现从一个void函数返回?
- 将不同的数据类型组合成一个void类型