为什么在串行通信中使用动态内存分配会很好?

问题描述 投票:0回答:1

在Visual Studio中,以下函数正在从称为CSerial的类中调用其他函数,为什么在本示例中使用动态内存分配是一个好主意?该程序的功能是通过USB端口将数据从计算机发送到Arduino。它在Visual Studio中编码。

bool sendExample(int port, int baudRate)
{
    char data[4];

    CSerial* s = new CSerial();

    if(!s->Open(port, baudRate))
    {
        std_out << _T("Could not open COM") << port << endl;
        return false;
    }


    // Sending a string of 4 characters
    data[0] = 0x31; 
    data[1] = 0x32;
    data[2] = 0x33;
    data[3] = 0x0D; // ASCII CR
    s->SendData(data, 4);

    s->Close();

    delete s;

}

c++ arduino serial-port dynamic-memory-allocation serial-communication
1个回答
0
投票

在此示例中,自动变量应该是显而易见的选择:

CSerial s;

但是如果出于某种原因想要动态分配,请使用智能指针-否则,如果端口打开失败,它将泄漏:

std::unique_ptr<CSerial> s = std::make_unique<CSerial>();
© www.soinside.com 2019 - 2024. All rights reserved.