本文共 402 字,大约阅读时间需要 1 分钟。
很多场景下,需要主函数获取子函数产生的数组。然而子函数的数组声明在栈上,函数退出时会自动清除该内存空间的内容,直接返回指针就会出事。
有两种方法可以解决这个问题:
在主函数中事先声明数组,然后将其指针传到子函数中进行修改。
例如:int array[100];int num=0;// void func(int *array, int &num)func(array,num);
但是这样有一个问题,就是需要事先分配好大小,可能会造成溢出或者浪费。因此考虑有第二种选择。
使用new来在子函数中为数组分配空间。因为new操作将数组在堆上分配内存,因此必须要手动释放才会销毁其中的内容。因此可以放心的把该数组的指针返回给主函数。——记得最后释放掉。
例如:int *func(){ int k = 10; int * res = new int[k]; for(int i =0;i
转载地址:http://avcws.baihongyu.com/