Undefined symbol: operator delete(void*)
233浏览 · 2023-05-23 08:01:27
这个错误提示通常发生在 C++ 中,表示你尝试使用了未定义的 operator delete [[函数](https://geek.csdn.net/educolumn/2319d2a62911adc34b96ea572d8225a2?spm=1055.2569.3001.10083)](https://geek.csdn.net/educolumn/ba94496e6cfa8630df5d047358ad9719?dp_token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI6NDQ0MDg2MiwiZXhwIjoxNzA3MzcxOTM4LCJpYXQiOjE3MDY3NjcxMzgsInVzZXJuYW1lIjoid2VpeGluXzY4NjQ1NjQ1In0.RrTYEnMNYPC7AQdoij4SBb0kKEgHoyvF-bZOG2eGQvc&spm=1055.2569.3001.10083)。有两种可能的原因:一是你没有正确包含头文件,二是你使用了不合适的参数。请检查你的[代码](https://geek.csdn.net/educolumn/1572ef9b473b4e00f6b2bf6d428b7c27?spm=1055.2569.3001.10083),确保正确包含了相应的头文件,并且传递给 operator delete [[函数](https://geek.csdn.net/educolumn/2319d2a62911adc34b96ea572d8225a2?spm=1055.2569.3001.10083)](https://geek.csdn.net/educolumn/ba94496e6cfa8630df5d047358ad9719?dp_token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI6NDQ0MDg2MiwiZXhwIjoxNzA3MzcxOTM4LCJpYXQiOjE3MDY3NjcxMzgsInVzZXJuYW1lIjoid2VpeGluXzY4NjQ1NjQ1In0.RrTYEnMNYPC7AQdoij4SBb0kKEgHoyvF-bZOG2eGQvc&spm=1055.2569.3001.10083)的参数类型正确。
相关问题
这个错误通常是由于没有实现类的析构函数导致的。析构函数负责释放对象的资源,而 operator delete(void*) 是在释放动态分配的内存时使用的函数。如果类中动态分配了内存,但没有正确释放,将导致 operator delete(void*) 找不到相关的符号,从而导致这个错误。检查代码中是否实现了类的析构函数并正确释放了动态分配的内存就可以解决这个问题了。
这是一个模板类 threadpool 中的 worker 函数的实现,该函数是线程池中的工作线程执行的函数。
参数 arg 是传递给该函数的参数,通常是线程池对象的指针。
函数返回值是一个 void 指针,表示线程执行完毕后的返回值。
函数实现中,首先将参数 arg 转换为 threadpool 类型的指针,然后从线程池中取出一个任务进行执行。如果线程池被关闭了,那么就退出该函数。
任务的执行是通过调用任务对象的 operator() 实现的。如果执行过程中出现了异常,那么就打印一条错误信息。
执行完任务后,将任务对象的指针重新放回任务队列中,然后继续等待下一个任务的到来。