如果在C中将分配的内存设置为NULL会发生什么

维尔纳先生

在分配指针之前和之后将指针设置为NULL是否有区别?

例如,两者之间有什么区别吗

char* c = NULL;

char* c = malloc(sizeof(char));
c = NULL;

这些语句中的每一个的含义是什么(如果有的话),free(c)在每种情况下调用时有什么区别

埃德温·巴克

在分配它之前,它可能具有(取决于声明的位置)垃圾数据。通过之前将其分配为null,基本上可以确保它处于已知的良好状态。

在将地址分配并分配给变量后,将指针设置为null意味着指针将不再引用分配的内存。通常,这会造成内存泄漏(一部分已分配的内存无法再被引用,因此无法释放)。但是有时候这是适当的。例如,如果您的逻辑有两个对内存的引用,一个用于分配/解除分配目的,一个用于“当前感兴趣的项目”,则分配当前感兴趣的项目,然后为该“当前项目”分配null可能是合适的兴趣”指针与内存分配和释放无关。

最后,如果它是用于释放free()的指针,则在指针之后,出于与分配之前将指针设置为null相同的原因,您可能希望将指针设置为null(以确保程序没有当不是您要访问的内存时,通过在指针中找到地址值会感到困惑。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如果在将P设置为nil之后将C类的字段F分配给指针P,在FreePascal中会发生什么?

来自分类Dev

如果在将P设置为nil之后将C类的字段F分配给指针P,在FreePascal中会发生什么?

来自分类Dev

如果在反引号中为命令表达式分配了变量,会发生什么情况

来自分类Dev

如果在现有实例上分配新类,会发生什么?

来自分类Dev

如果在枚举时覆盖ImmutableHashSet会发生什么?

来自分类Dev

如果在C ++中擦除()一个元素,迭代器会发生什么?

来自分类Dev

如果在此代码中将变量i直接传递给线程,会发生什么情况?

来自分类Dev

如果在GWT中将超时设置为30天,为什么将不存储Cookies?

来自分类Dev

如果我未在Activity onDestroy()中将Dagger 2组件设置为null,会发生什么情况?

来自分类Dev

如果在c ++构造函数中以错误的顺序初始化对象数据,会发生什么样的错误

来自分类Dev

如果在进行JVM关闭时再次调用System.exit()会发生什么?

来自分类Dev

Android:如果在任务运行时调用AsyncTask execute()会发生什么?

来自分类Dev

如果在插入大量数据时网络连接丢失,会发生什么?

来自分类Dev

如果在多个清单中声明了许可,会发生什么?

来自分类Dev

如果在使用LruCache类时不覆盖sizeof会发生什么

来自分类Dev

如果在其自己的构造函数中实例化对象,会发生什么?

来自分类Dev

如果在构造函数中使用super调用重写的方法会发生什么

来自分类Dev

如果在Spring MVC中交换@service和@repository批注会发生什么

来自分类Dev

如果在远程钩子运行时中断本地git进程会发生什么?

来自分类Dev

如果在执行程序时更改GDT,会发生什么?

来自分类Dev

如果在promise.set_value()之后调用future.get()会发生什么?

来自分类Dev

如果在数学表达式中使用额外的括号(),会发生什么?

来自分类Dev

如果在安装系统更新的同时关闭Windows,会发生什么最糟糕的事情?

来自分类Dev

如果在已经初始化的变量上使用`var`会发生什么情况

来自分类Dev

如果在插入大量数据时网络连接丢失,会发生什么?

来自分类Dev

网络编程:如果在选择之后和发送之前网络断开连接会发生什么

来自分类Dev

如果在我的java文件中使用了很多@SuppressWarnings,会发生什么情况?

来自分类Dev

如果在更新过程中安排关机,会发生什么情况?

来自分类Dev

如果在crontab文件中使用@reboot reboot,会发生什么情况?

Related 相关文章

  1. 1

    如果在将P设置为nil之后将C类的字段F分配给指针P,在FreePascal中会发生什么?

  2. 2

    如果在将P设置为nil之后将C类的字段F分配给指针P,在FreePascal中会发生什么?

  3. 3

    如果在反引号中为命令表达式分配了变量,会发生什么情况

  4. 4

    如果在现有实例上分配新类,会发生什么?

  5. 5

    如果在枚举时覆盖ImmutableHashSet会发生什么?

  6. 6

    如果在C ++中擦除()一个元素,迭代器会发生什么?

  7. 7

    如果在此代码中将变量i直接传递给线程,会发生什么情况?

  8. 8

    如果在GWT中将超时设置为30天,为什么将不存储Cookies?

  9. 9

    如果我未在Activity onDestroy()中将Dagger 2组件设置为null,会发生什么情况?

  10. 10

    如果在c ++构造函数中以错误的顺序初始化对象数据,会发生什么样的错误

  11. 11

    如果在进行JVM关闭时再次调用System.exit()会发生什么?

  12. 12

    Android:如果在任务运行时调用AsyncTask execute()会发生什么?

  13. 13

    如果在插入大量数据时网络连接丢失,会发生什么?

  14. 14

    如果在多个清单中声明了许可,会发生什么?

  15. 15

    如果在使用LruCache类时不覆盖sizeof会发生什么

  16. 16

    如果在其自己的构造函数中实例化对象,会发生什么?

  17. 17

    如果在构造函数中使用super调用重写的方法会发生什么

  18. 18

    如果在Spring MVC中交换@service和@repository批注会发生什么

  19. 19

    如果在远程钩子运行时中断本地git进程会发生什么?

  20. 20

    如果在执行程序时更改GDT,会发生什么?

  21. 21

    如果在promise.set_value()之后调用future.get()会发生什么?

  22. 22

    如果在数学表达式中使用额外的括号(),会发生什么?

  23. 23

    如果在安装系统更新的同时关闭Windows,会发生什么最糟糕的事情?

  24. 24

    如果在已经初始化的变量上使用`var`会发生什么情况

  25. 25

    如果在插入大量数据时网络连接丢失,会发生什么?

  26. 26

    网络编程:如果在选择之后和发送之前网络断开连接会发生什么

  27. 27

    如果在我的java文件中使用了很多@SuppressWarnings,会发生什么情况?

  28. 28

    如果在更新过程中安排关机,会发生什么情况?

  29. 29

    如果在crontab文件中使用@reboot reboot,会发生什么情况?

热门标签

归档