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

标签 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的用法,如果有人能告诉我我在哪里犯了思维错误,那将非常有帮助

谁能帮帮我?那该多好

最佳答案

您可以使用 C++11 中的工具简化您的生活。关于:

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

这不是很好吗?不需要为动态内存操心,只需复制这 6 个指针,它相对便宜。

关于c++ - 在堆中创建一个函数指针数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48825068/

相关文章:

php - 在 Redis 中存储数组的数组

c - 何时在 C 中使用指针

c - 指针符号

c++ - C++ 中的线程安全函数指针

c++ - 线程间的信号

c++ - 从 child 到 parent 的转换不允许静态转换

arrays - 使用第二维重新调整现有数组?

c++ - 从另一个 .cpp 文件调用函数

java - 计算质数没有输出

c - 我的算法的奇怪行为