C++用数字填充数组然后返回指向它的指针

Hun*_*ves 0 c++ pointers

我最近遇到了一个问题,我想不出一个好的解决方法.我正在使用案例结构来尝试将属性设置为将传递给对象构造函数的"字符".

例:

//note this is inside a function with a return type of int*
int selection;
cin >> selection;
int * iPtr;

switch(selection){

case 1:{
     int anArray[6] = {8,5,2,4,250,100} // str, dex, int, luck, hp, mp
     iPtr = anArray;
     return iPtr;
}

//more cases and such below
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是,当我返回指针时,它似乎充满了大量的垃圾,而不是信息,而不是我期望它保留的信息.那是因为数组在范围的末尾被销毁了吗?如果是这样,我该怎么做才能使我的方法成为我希望它(获得一个指向我想要的值的指针).

谢谢!

Daw*_*son 6

是 - anArray在堆栈中声明.当函数退出时,它的堆栈帧被回收,因此引用该内存不再有效.如果您希望数组保持不变,请将其分配到堆上:

int* anArray = new int[6]; // and initialize
return anArray;
Run Code Online (Sandbox Code Playgroud)

只要记得稍后用相应的方法清理它delete[].

编辑

您应该更喜欢使用能够自动管理资源的东西,例如Praetorian的答案,这样您就不会意外泄漏内存.