可用指针偏移量不再有效?

KaibutsuX

我可能已经宣誓过,这段代码应该可以工作,但是现在看来它是段错误的。有人知道这是否总是如此,还是glibc发生了变化?


   ....
   char *tmp = malloc(50);
   tmp = &tmp[10];
   free(tmp);   // segfault
   // I thought as long as the pointer was within a valid memory block,   
   // the free was valid. Obviously I know not to double free, but this   
   // means any pointer offsets must be kept along with the original malloced 
   // pointer for the free operation.
来自莫斯科的弗拉德

此代码段

   char *tmp = malloc(50);
   tmp = &tmp[10];
   free(tmp);   // segfault
   // I thought as long as the

无效,因为此语句之后

   tmp = &tmp[10];

指针tmp没有动态分配的内存范围的地址。所以下一条语句

free(tmp);

调用未定义的行为。

根据C标准(7.22.3.3免费功能)

否则,如果参数与内存管理函数先前返回的指针不匹配,或者如果通过调用free或realloc释放了空间,则该行为是undefined

你可以写

   tmp = &tmp[10];
   //...
   free(tmp - 10 );

或者似乎您需要重新分配早期分配的内存,例如

   char *tmp = malloc(50);
   char *tmp2 = realloc( tmp, 10 );

   if ( tmp2 != NULL ) tmp = tmp2;

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Android:“ slideEdge”不再有效

来自分类Dev

分隔符有效时explode()偏移量和分隔符警告

来自分类Dev

向缓冲区提供偏移量时,无效的有效地址错误

来自分类Dev

Android Play商店market://链接不再有效?

来自分类Dev

使用Python xarray屏蔽'where'不再有效

来自分类Dev

雅虎财务不再有效吗?

来自分类Dev

获取不再有效的Google Cache for PDF副本

来自分类Dev

提交密码表格不再有效

来自分类Dev

CSS损坏-自动调整大小不再有效

来自分类Dev

stringByAppendingPathComponent对swift2不再有效

来自分类Dev

使用Python xarray屏蔽'where'不再有效

来自分类Dev

systemctl重装网络不再有效

来自分类Dev

Liberty SSL 证书密钥不再有效

来自分类Dev

Firebase 崩溃 - 批量上传不再有效

来自分类Dev

Arrow 和 canc 确实不再有效

来自分类Dev

Xtext 交叉引用不再有效?

来自分类Dev

Tidyverse 更新和 rlang - 代码不再有效

来自分类Dev

如何找到带有偏移量的指针 [ecx+eax*4](地址偏移量?)

来自分类Dev

通过bash发送邮件曾经有效,现在不再有效

来自分类Dev

LLVM - 从带有偏移量的指针加载变量

来自分类Dev

如何有效地重复带有偏移量的2D numpy数组?

来自分类Dev

是否有一种有效的方法可以在 pyshark 中获取字段偏移量

来自分类Dev

获取指定时区的UTC偏移量的更有效方法(例如,美国/中部的-21600)

来自分类Dev

当程序从该函数返回时,指向在函数中声明和定义的某些 c 字符串的指针不再有效。为什么?

来自分类Dev

异步循环不再有HttpContext可用

来自分类Dev

删除具有子对象的RLMObject时,Realm.io'RLMArray不再有效'

来自分类Dev

带有 Ubuntu 18.04 的 Lenovo P1 上的 Wifi 不再有效

来自分类Dev

计算C ++中指针的偏移量

来自分类Dev

C++ 指针偏移量平方

Related 相关文章

  1. 1

    Android:“ slideEdge”不再有效

  2. 2

    分隔符有效时explode()偏移量和分隔符警告

  3. 3

    向缓冲区提供偏移量时,无效的有效地址错误

  4. 4

    Android Play商店market://链接不再有效?

  5. 5

    使用Python xarray屏蔽'where'不再有效

  6. 6

    雅虎财务不再有效吗?

  7. 7

    获取不再有效的Google Cache for PDF副本

  8. 8

    提交密码表格不再有效

  9. 9

    CSS损坏-自动调整大小不再有效

  10. 10

    stringByAppendingPathComponent对swift2不再有效

  11. 11

    使用Python xarray屏蔽'where'不再有效

  12. 12

    systemctl重装网络不再有效

  13. 13

    Liberty SSL 证书密钥不再有效

  14. 14

    Firebase 崩溃 - 批量上传不再有效

  15. 15

    Arrow 和 canc 确实不再有效

  16. 16

    Xtext 交叉引用不再有效?

  17. 17

    Tidyverse 更新和 rlang - 代码不再有效

  18. 18

    如何找到带有偏移量的指针 [ecx+eax*4](地址偏移量?)

  19. 19

    通过bash发送邮件曾经有效,现在不再有效

  20. 20

    LLVM - 从带有偏移量的指针加载变量

  21. 21

    如何有效地重复带有偏移量的2D numpy数组?

  22. 22

    是否有一种有效的方法可以在 pyshark 中获取字段偏移量

  23. 23

    获取指定时区的UTC偏移量的更有效方法(例如,美国/中部的-21600)

  24. 24

    当程序从该函数返回时,指向在函数中声明和定义的某些 c 字符串的指针不再有效。为什么?

  25. 25

    异步循环不再有HttpContext可用

  26. 26

    删除具有子对象的RLMObject时,Realm.io'RLMArray不再有效'

  27. 27

    带有 Ubuntu 18.04 的 Lenovo P1 上的 Wifi 不再有效

  28. 28

    计算C ++中指针的偏移量

  29. 29

    C++ 指针偏移量平方

热门标签

归档