Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用重新分配指针时为malloc和free_C - Fatal编程技术网

使用重新分配指针时为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)
释放,而用于指向的任何内存现在都是内存泄漏。