diff --git a/Adafruit_SPIDevice.cpp b/Adafruit_SPIDevice.cpp index 1b6b3bf..975e31f 100644 --- a/Adafruit_SPIDevice.cpp +++ b/Adafruit_SPIDevice.cpp @@ -70,6 +70,16 @@ Adafruit_SPIDevice::Adafruit_SPIDevice(int8_t cspin, int8_t sckpin, _spi = NULL; } +/*! + * @brief Release memory allocated in constructors + */ +Adafruit_SPIDevice::~Adafruit_SPIDevice() { + if (_spiSetting) { + delete _spiSetting; + _spiSetting = nullptr; + } +} + /*! * @brief Initializes SPI bus and sets CS pin high * @return Always returns true because there's no way to test success of SPI diff --git a/Adafruit_SPIDevice.h b/Adafruit_SPIDevice.h index 55a2d70..b96f86b 100644 --- a/Adafruit_SPIDevice.h +++ b/Adafruit_SPIDevice.h @@ -66,6 +66,7 @@ public: uint32_t freq = 1000000, BitOrder dataOrder = SPI_BITORDER_MSBFIRST, uint8_t dataMode = SPI_MODE0); + ~Adafruit_SPIDevice(); bool begin(void); bool read(uint8_t *buffer, size_t len, uint8_t sendvalue = 0xFF);