没有动态内存分配的C++返回数组?

3 c++ memory arrays memory-management

我没有办法在没有动态内存分配的情况下返回数组.我将使用一个示例详细解释它:
使用动态内存分配:

Device* getConnectedDevices() {
    // scan for devices.
    Device *connectedDevices = new Device[deviceCount]; // Dynamically allocate memory for the Devices
    // Get for each device an ID
    return connectedDevices;
}
void doSomething() {
    // some code
    // I need a list with all the connected devices!!
    Device *connectedDevices;
    connectedDevices = getConnectedDevices();
    // do something with the array
}
Run Code Online (Sandbox Code Playgroud)

doSomething()不知道数组的大小,所以我用一个结构来解决这个问题:

struct deviceArray {
    Device* devices;
    int deviceCount;
};
Run Code Online (Sandbox Code Playgroud)

没有动态内存分配: 我不知道如何做到这一点.我尝试了以下事项:

  • 通过引用传递.问题:我们在扫描前不知道阵列大小.
  • 没有动态内存分配的返回(局部变量).问题:对象不再存在(当然).

use*_*042 9

通常,如果没有动态内存分配,则无法执行此操作.
出现的问题(跟踪大小,正确的解除分配等)很常见.

您描述的这些问题在c ++中使用容器类动态内存管理智能指针来解决.

在您的情况下,使用a std::vector<Device>表示设备列表并隐藏动态内存管理的详细信息和复杂性是合适的.