在另一个函数内部改变指针数组所包含的地址
Changing the address contained by an array of pointer INSIDE an another function
我有一个指针数组unsigned char *dev_src[2];
。实际上,这些指针必须指向cudaMalloc()
分配的内存。
我能够获得分配内存的地址,如果我使用以下代码在main()
内做:
//Inside the same function
int memsize = 100;
int main()
{
unsigned char *dev_src[2];
//Allocate memomry
for (int i = 0; i < numCudaStreams; i++)
{
cudaMalloc((void**)&dev_src[i], memsize);
}
return 0;
}
问题:我想在另一个函数中获得分配的内存地址,我需要将这个指针数组传递给该函数。我已经知道如何将数组传递给另一个函数并在其内部进行更改,但在这种情况下,我无法获得正确的方法。
//Inside another function
int memsize = 100;
void memallocation(unsigned char ????)
{
//Allocate memomry
for (int i = 0; i < numCudaStreams; i++)
{
cudaMalloc((void**)??????????, memsize);
}
}
int main()
{
unsigned char *dev_src[2];
//Initialization of pointers before passing them to a function
for (int i = 0; i < 2; i++)
*dev_src[i] = NULL;
memallocation(&dev_src);
return 0;
}
UPDATE:这不是这个问题的重复。我已经提到,我知道如何通过引用传递数组来改变它的元素,但在这种情况下,元素本身必须是由cudaMalloc()
分配的指针。
您可以执行如下操作。我传递数组作为参考,并使其适用于不同的数组大小,我已将其作为模板。用cudaMalloc替换内存分配行
template<int N>
void memallocationA(unsigned char *(&arr)[N])
{
//Allocate memomry
for (int i = 0; i < N; i++)
{
//cudaMalloc((void**) &arr[i] , memsize);
arr[i] = new unsigned char[10];
}
}
int main()
{
unsigned char *dev_src[2];
//Initialization of pointers before passing them to a function
for (int i = 0; i < 2; i++)
dev_src[i] = NULL;
memallocationA(dev_src);
return 0;
}
相关文章:
- 将数组的地址分配给变量并删除
- 如何导出包含具有"std::unique_ptr"值的"std::map"属性的
- 为什么 Wild 指针包含零地址而不是 garabge 地址?
- C++:获取包含成员子对象的完整对象的地址
- 将指针分配给字符串变量中包含的地址
- C 如何使用包含浮点的CE的给定地址进行阅读/写入
- 返回类型 char* 的成员函数返回在 while 循环后包含不同字符串的地址
- [C ] NULL确实在内存中也包含一个特定的地址
- 检查子对象的地址是否在包含对象的边界内是否合法
- 为什么此指针包含存储在堆上的地址
- 反转指向成员的指针(即获取包含结构的地址)
- 复制包含原子成员的对象的地址
- std矢量包含指针和变量地址.清理
- 我想知道指针在调试时包含特定的地址
- 在另一个函数内部改变指针数组所包含的地址
- 是否可以从FTP地址添加包含路径到visual studio ?
- 为什么变量指针包含相同数据类型的地址?
- 包含值地址的字符串 ->该值的指针
- 包含地址的排序向量
- 使类指针指向包含其成员的地址