如何将矩阵复制到指针指向的位置?
我是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
提前致谢
答案 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 []的正确用法。如果您在示例中处理了释放,我建议您的代码不会更好。 :)