gdb free invalid pointer问题解决

ゞ 浴缸里的玫瑰 2021-11-16 12:46 420阅读 0赞

1,代码问题:

新建 gdb.c

  1. #include<stdio.h>
  2. #include<stdint.h>
  3. #include<stdlib.h>
  4. //#include <sharemem.h>
  5. void fun(uint8_t* p)
  6. {
  7. uint8_t a = 100;
  8. *p = a;
  9. }
  10. void fun1(int* p)
  11. {
  12. int b = 999;
  13. *p = b;
  14. }
  15. int main()
  16. {
  17. uint8_t *p = (uint8_t*)malloc(sizeof(uint8_t*));
  18. uint8_t a;
  19. p = &a;
  20. fun(p);
  21. printf("a=%d\n",a);
  22. free(p);
  23. p = NULL;
  24. int* q1 = (int*)malloc(sizeof(int*));
  25. int g;
  26. q1 = &g;
  27. fun1(q1);
  28. printf("g=%d\n",g);
  29. free(q1);
  30. return 0;
  31. }

运行代码情况如下:

20190728093837940.PNG

2,代码分析:

我们在用mallc申请了存储空间后所返回的指针在之后的操作中使所返回的指针的指向发生了变化,所以我们需要保存指针的指向,这里我的解决方法是对指针进行一份拷贝,而后将拷贝返回给原指针。

  1. int main()

发表评论

表情:
评论列表 (有 0 条评论,420人围观)

还没有评论,来说两句吧...

相关阅读