how to return two dimensional char array c++?

前端 未结 8 2131
攒了一身酷
攒了一身酷 2020-12-03 15:23

i ve created two dimensional array inside a function, i want to return that array, and pass it somewhere to other function..

char *createBoard( ){  
  char          


        
8条回答
  •  时光取名叫无心
    2020-12-03 15:59

    Yeah see what you are doing there is returning a pointer to a object (the array called board) which was created on the stack. The array is destroyed when it goes out of scope so the pointer is no longer pointing to any valid object (a dangling pointer).

    You need to make sure that the array is allocated on the heap instead, using new. The sanctified method to create a dynamically allocated array in modern C++ is to use something like the std::vector class, although that's more complicated here since you are trying to create a 2D array.

    char **createBoard()
    {
        char **board=new char*[16];
        for (int i=0; i<16; i++)
        {
           board[i] = new char[10];
           for (int j=0; j<10; j++)
             board[i][j]=(char)201;
        }
    
        return board;
    }
    
    void freeBoard(char **board)
    {
        for (int i=0; i<16; i++)
          delete [] board[i];
        delete [] board;
    }
    

提交回复
热议问题