diff --git a/src/libcamera/software_isp/debayer_cpu.cpp b/src/libcamera/software_isp/debayer_cpu.cpp
index f8d2677d657a..249294efca01 100644
--- a/src/libcamera/software_isp/debayer_cpu.cpp
+++ b/src/libcamera/software_isp/debayer_cpu.cpp
@@ -57,7 +57,7 @@ DebayerCpu::DebayerCpu(std::unique_ptr<SwStatsCpu> stats)
 DebayerCpu::~DebayerCpu()
 {
 	for (unsigned int i = 0; i < kMaxLineBuffers; i++)
-		free(lineBuffers_[i]);
+		delete[] lineBuffers_[i];
 }
 
 #define DECLARE_SRC_POINTERS(pixel_t)                            \
@@ -529,8 +529,8 @@ int DebayerCpu::configure(const StreamConfiguration &inputCfg,
 	for (unsigned int i = 0;
 	     i < (inputConfig_.patternSize.height + 1) && enableInputMemcpy_;
 	     i++) {
-		free(lineBuffers_[i]);
-		lineBuffers_[i] = (uint8_t *)malloc(lineBufferLength_);
+		delete[] lineBuffers_[i];
+		lineBuffers_[i] = new uint8_t[lineBufferLength_];
 		if (!lineBuffers_[i])
 			return -ENOMEM;
 	}
