首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >什么是"malloc.c:2539: sysmalloc:断言“(old_top == initial_top (av) &.”卑劣?

什么是"malloc.c:2539: sysmalloc:断言“(old_top == initial_top (av) &.”卑劣?
EN

Stack Overflow用户
提问于 2021-02-18 10:45:18
回答 1查看 2.1K关注 0票数 0

我试图用C来调整数组的大小,但是我得到了一个运行时断言

这是代码片段:

代码语言:javascript
复制
        int *v = malloc(sizeof(v) * 5);
        memcpy(v, (int[]){ 0, 1, 2, 3, 4,}, 5 * sizeof(int));
        v = realloc(v, sizeof(int) * 6);
        v[6] = 6; 

        for(int i = 0; i < 5; i++)
        {
                printf("%d", v[i]); //assertion at this line
        }

当我运行这个程序时,我就知道了:

代码语言:javascript
复制
a.out: malloc.c:2539: 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.

我不明白

我也没有收到任何警告

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-02-18 10:49:51

您有两个可能导致内存损坏的bug:

  • sizeof(v) -> sizeof(*v)
  • v[6] = 6;,这是不允许的,因为您为6项而不是7项分配了空间。C得到了0索引数组,就像他们在数组初学者类中教我们的那样。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66258358

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档