c-释放堆内存后,将指针设置为NULL



我看到了一个简单的C程序:

//create a pointer to 3 bytes on heap
char *start = malloc(3);
*start = 'u';
*(start + 1) = 'v';
*(start + 2) = 'w';
printf("%s has %zu characters.n", start, strlen(start));
// Free the memory so that it can be reused
free(start);
//Why we need to set start = NULL if we have already freed the memory above
start = NULL;

除了最后一行start = NULL;,我理解所有内容,为什么我们需要将其设置为NULL?这只是为了让指针指向NULL而不是无感内存空间吗?

start = NULL;是一个必须的动作还是很好的动作?

您询问:

start = NULL;是必须的动作还是很好的动作?

虽然在技术上没有要求,但NULL指针是一种很好的编程实践,以避免出现"悬空指针",即指向不再无效的内存的指针。

如果start变量立即超出范围(即悬空指针将立即消失),则其值有限。但是,如果这个start变量的范围更广,那么最好使用NULL

相关内容

  • 没有找到相关文章

最新更新