最近写多线程的程序,要实现一个链表,用到了malloc和free,在加了许多printf打印的效果的程序中,跑的比较稳定,没有发现什么错误;
但是一但把打印消息去掉,就会报段错误或coredump错误;真是百思不得其解,最后把其中的一个free去掉了,做了一些试验(前提是不会把堆里的内存全部用掉),
发现正确;于是猜测是free的操作太早了,在一个指针还没有用完的情况下就释放了,可能在下面程序还要用到这个指针的时候,这个指针 指向的地址发生了变化,导致
发生了段错误和coredump;
最近写多线程的程序,要实现一个链表,用到了malloc和free,在加了许多printf打印的效果的程序中,跑的比较稳定,没有发现什么错误;
但是一但把打印消息去掉,就会报段错误或coredump错误;真是百思不得其解,最后把其中的一个free去掉了,做了一些试验(前提是不会把堆里的内存全部用掉),
发现正确;于是猜测是free的操作太早了,在一个指针还没有用完的情况下就释放了,可能在下面程序还要用到这个指针的时候,这个指针 指向的地址发生了变化,导致
发生了段错误和coredump;