将矩阵复制到指针指向c ++的位置

时间:2013-09-19 15:29:53

标签: c++

如何将矩阵复制到指针指向的位置?

我是c ++的新手。我尝试了很多,但我找不到任何解决方案。

这是我的代码:

float *output = new float[HighRange];
output = new float[10 * 10];    

for(int i=0; i<10; i++){
    for(int j=0; j<10; j++){
        output[j]=input[i][j]; ---> I have error in this line

提前致谢

2 个答案:

答案 0 :(得分:1)

有几种方法可以在input中排列output的元素。这是一种方式:

output[i*10 + j] = input[i][j]

答案 1 :(得分:0)

除了NPE的建议外,这里有内存泄漏:

float *output = new float[HighRange]; // allocate contiguous block HighRange * sizeof(float) bytes
output = new float[10 * 10]; // allocate contiguous block 100 * sizeof(float) bytes

除了这是不必要的,你泄漏内存,即你在第一个语句中分配存储,你永远不会释放存储,然后将新值赋给保存第一个地址的指针到先前分配的存储。

使用new动态分配内存时,您需要确保相应地delete。对于数组,您需要执行以下操作:

float *output = new float[HighRange]; // allocate 
delete [] output; // deallocate, note the delete[] operator
output = new float[10 * 10]; // allocate anew

注意:这只是为了显示new / delete []的正确用法。如果您在示例中处理了释放,我建议您的代码不会更好。 :)