在哪些情况下应该避免使用reinterpret_cast来重塑数组?

时间:2017-06-06 19:52:35

标签: c++ arrays embedded reshape

所以我目前正在研究嵌入式主板(STM32)并特别考虑内存限制,我试图避免包括内存分配在内的繁重功能。我有1x9 2D数组,我需要reshape到3x3。我在网上发现它可以使用reinterpret_cast完成,但我不知道它是否安全这样做?

下面是一个使用reinterpret_cast进行重新整形以及正常数组操作的示例代码,我认为它可以替代reinterpret_cast。你们有什么建议? 检查此代码:https://repl.it/IIYv/20;两者都有相同的输出

#include <iostream>

int main() {

double matrix[1][9] = { {10, 20, 30, 40, 50, 60, 70, 80, 90} };


//using reinterpret_cast

double (&reshapeMatrix)[3][3]=*reinterpret_cast<double(*)[3][3]>(matrix);
double newArray[3][3];


 int i, j; 

 for (i=0; i<3; i++){
   for (j=0; j<3; j++){
     printf ("%f, ",reshapeMatrix[i][j]);
   }
   printf ("\n");
 }

//using normal array operation
 int r=0, c=0;

 for (i=0; i<3; i++){
   for (j=0; j<3; j++){
     newArray[i][j] = matrix[r][c];
     c++;
   }

 }
 printf ("\n\n\n");

  for (i=0; i<3; i++){
   for (j=0; j<3; j++){
     printf ("%f, ",newArray[i][j]);
   }
   printf ("\n");
 }



}

0 个答案:

没有答案