0

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

我是 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

提前致谢

4

2 回答 2

1

有几种方法可以排列inputin的元素output。这是一种方法:

output[i*10 + j] = input[i][j]
于 2013-09-19T15:32:00.180 回答
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[] 的正确用法。如果您在示例中处理解除分配,我绝不建议您的代码会更好。:)

于 2013-09-19T15:36:29.897 回答