如何动态开辟二维空间的问题,

你的问题其实就是如何动态开辟二维空间的问题, 这个问题在C++ 学习者中是每个人都会遇到的, 针对这个问题我写了一个 Demo code, 希望对你以及对大家会有一些帮助。
[CODE]
#include <iostream>
#include <cstdlib>
using namespace std;

int main()
{
int rows = 2;
int cols = 3;

// create a dynamic array
int ** array = NULL;
array = new int * [rows];


for(int i = 0; i < rows; i++)
{
array[i] = new int[cols];

// init this 2d array
for(int j = 0; j<cols; j++)
{
array[i][j] = (i+1)*(j+1);
}
}


// to check what we have done
for(int i = 0; i < rows; i++)
{
for(int j = 0; j<cols; j++)
{
cout<<array[i][j]<<" ";
}
cout<<endl;
}

// before you leave the program
// you should release the space what you have dynamically allocated
// to delete the allocation
for(int i = 0; i<rows; i++)
{
delete [] array[i];
array[i] = NULL; // to avoid wild pointer
}

delete [] array;
array = NULL; // to avoid wild pointer

system("pause");
return 0;
}

[/CODE]

http://bbs.bccn.net/thread-62318-1-1.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在GPU上开辟二维数组空间,可以使用CUDA的动态内存分配函数`cudaMalloc()`和`cudaMemcpy()`,具体步骤如下: 1. 定义二维数组的行数和列数,例如: ```c++ int rows = 10; int cols = 20; ``` 2. 在设备端(GPU)上分配二维数组空间,使用`cudaMalloc()`函数,例如: ```c++ float* device_arr; cudaMalloc((void**)&device_arr, rows * cols * sizeof(float)); ``` 这里使用了`cudaMalloc()`函数,分配了一个大小为`rows * cols * sizeof(float)`字节的空间,将指针赋值给`device_arr`。 3. 将主机端(CPU)上的二维数组数据拷贝到设备端(GPU)上的二维数组空间中,使用`cudaMemcpy()`函数,例如: ```c++ float host_arr[rows][cols]; // 初始化 host_arr cudaMemcpy(device_arr, host_arr, rows * cols * sizeof(float), cudaMemcpyHostToDevice); ``` 这里使用了`cudaMemcpy()`函数,将主机端(CPU)上的二维数组`host_arr`拷贝到设备端(GPU)上的二维数组`device_arr`中。 4. 在设备端(GPU)上操作二维数组,例如: ```c++ kernel<<<gridSize, blockSize>>>(device_arr, rows, cols); ``` 这里假设有一个名为`kernel`的CUDA核函数,需要对设备端(GPU)上的二维数组`device_arr`进行操作,传递二维数组的行数和列数作为参数。 5. 在设备端(GPU)上释放二维数组空间,使用`cudaFree()`函数,例如: ```c++ cudaFree(device_arr); ``` 这里使用了`cudaFree()`函数,释放了设备端(GPU)上的二维数组`device_arr`所占用的空间。 需要注意的是,在设备端(GPU)上的二维数组通常是使用一维数组来表示的,可以按照行优先或列优先的方式进行存储,具体实现需要根据具体需求进行调整。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值