在堆中创建一个函数指针数组

时间:2018-02-16 10:46:07

标签: c++ arrays pointers heap-memory

我有一个包含6个函数指针的数组:

int (*arrayOfFunPointers[6])();


我现在要做的是在堆中分配该数组 因为我在函数中创建数组并返回指向该数组的指针:

int (*(*fun2())[6])(){

    int (*funPointer)();
    int (*arrayOfFunPointers[6])();
    int (*(*pointerToArrayOfFunPointers)[6])();

    funPointer = &fun;
    arrayOfFunPointers[0] = funPointer;
    pointerToArrayOfFunPointers = &arrayOfFunPointers;

    return pointerToArrayOfFunPointers;
}

在方法之外,arrayOfFunPointers失去了他的有效区域,返回的指针指向"没有"

我尝试了很多:

int (*arrayOfFunPointers[6])() = new int (*[6])();

或使用typedef:

typedef int (*arrayOfFunPointers[6])();
arrayOfFunPointerss *array = new arrayOfFunPointers;

或通过赋值给返回的指针:

pointerToArrayOfFunPointers = new arrayOfFunPointers;
pointerToArrayOfFunPointers = new arrayOfFunPointers[]; //or

但没有任何作用。

也许我不理解正确使用关键字new,如果有人能告诉我在哪里犯了一个思维错误,那将会非常有用

有人能帮帮我吗?那会很不错

1 个答案:

答案 0 :(得分:3)

您可以使用C ++ 11中的工具简化您的生活。怎么样:

std::array<FunPointer, 6> getFunctions()
{
    std::array<FunPointer, 6> result;
    // ...
    return result;
}

不只是很好吗? Ne需要打扰动态内存,只需复制那些6指针,它相对便宜。