使用重新分配指针时为malloc和free
如果我错了,请纠正我。在下面的伪代码中,我为使用重新分配指针时为malloc和free,c,C,如果我错了,请纠正我。在下面的伪代码中,我为j创建了空间。当然,最后我需要释放空间。但是如果j被重新分配给另一个变量,那么释放变量另一个作业space是不好的,我无论如何都会有j的内存泄漏,因为代码正在释放另一个作业。我是对的 j=malloc(sizeof(struct jobDetails)); ... j=anotherJob; ... free(j); 是的,你说得对。除非您将j的原始值保存到其他地方,否则它将泄漏。你可能不想在这里释放另一份工作,因为你不知道它从哪里来,也不知道它是否
j
创建了空间。当然,最后我需要释放空间。但是如果j
被重新分配给另一个变量,那么释放变量另一个作业
space是不好的,我无论如何都会有j
的内存泄漏,因为代码正在释放另一个作业
。我是对的
j=malloc(sizeof(struct jobDetails));
...
j=anotherJob;
...
free(j);
是的,你说得对。除非您将
j
的原始值保存到其他地方,否则它将泄漏。你可能不想在这里释放另一份工作,因为你不知道它从哪里来,也不知道它是否会在其他地方释放。非常糟糕free
期望的是您分配的指针,而不是其他不相关的变量或指针。如果另一个作业
是通过malloc
获得的,那么它当然会被free(j)
释放,而用于指向的任何内存现在都是内存泄漏。