我用Valgrind进行了调查,它说错误来自strcy或strcasecmp函数,并呈现如下:==2433== at 0x4019BDaddress 0xFFE79AC81
==2433== at 0x4A256B0: _vgnU_freeres (in /usr/lib/valgrind/vgpreload_core-amd64-linux.soPS :我不太熟悉堆栈和堆的概念。我将进一步研究堆
我听说"malloc是线程安全的,因为它提供了一个同步原语,这样同步到malloc就不会破坏堆“。但是当我在visual studio crt中查看malloc函数的源代码时,发现malloc函数只是将请求传递给syscall HeapAlloc。因此,我认为是操作系统本身提供了某种类型的同步来保护应用程序免受损坏的堆,而不是malloc。
那么linux呢?malloc本身是否提供某种类型的同步?