记 malloc 奇怪的bug

介绍

写了一个项目,cpu + gpu ,不可避免的遇到 申请GPU的内存, 申请CPU的内存, CPU上的数组, 赋值来赋值去

遇到了奇怪的bug

malloc bugs

  1. malloc(): mismatching next->prev_size (unsorted)

2.malloc.c:2379: sysmalloc: Assertion `(old_top == initial_top (av) && old_size == 0) || ((unsigned long) (old_size) >= MINSIZE && prev_inuse (old_top) && ((unsigned long) old_end & (pagesize - 1)) == 0)' failed.

Sloved

  • malloc出来的东西 对应 free 掉

  • 没用到的指针不要声明,也不要随意 malloc

  • 不要用自己不熟的代码, 比如指针数组

  • 不要把指针随意赋值给别人,想干嘛?


BYTE *msg[num];

???emmm 指针数组? 不熟,真不熟

指针数组

arr就是一个指针数组,它有四个元素,每个元素是一个char *类型的指针,这些指针存放着其对应字符串的首地址。


char *arr[4] = {"hello", "world", "shannxi", "xian"};

char *arr2[4];

arr[1] = malloc.... // ??? 不熟真不熟

//

数组指针

pa是一个指针指向一个char [4]的数组,每个数组元素是一个char类型的变量


char (*pa)[4];

posted @ 2022-10-25 00:58  PiaYie  阅读(1886)  评论(0编辑  收藏  举报