在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;
}
在此示例中,自动变量应该是显而易见的选择:
CSerial s;
但是如果出于某种原因想要动态分配,请使用智能指针-否则,如果端口打开失败,它将泄漏:
std::unique_ptr<CSerial> s = std::make_unique<CSerial>();