leizisdu 2017-11-10 12:20 采纳率: 100%
浏览 862
已采纳

Linux系统下C语言编程,printf调用触发断言!

各路大牛晚上好!

小弟初次在Linux系统下尝试进行C语音编程,不太顺利!调用一个printf函数,就触发了断言!

折腾了一晚上了,实在没办法了,请大牛帮忙走查一下代码,帮忙看下为什么会触发断言呢?又应当如何修改呢?先谢谢了!

代码如下:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "init_array.h"

int variable_length_array(int **parray, int length)
{
    if (*parray != NULL)
    {
        fprintf(stderr, "The array not initiated!\n");
        return FAIL;
    }

    if (length <=0)
    {
        fprintf(stderr, "The length error!\n");
        return FAIL;
    }

    *parray = (int *)malloc(length);
    memset(*parray, 0x00, sizeof(int) * length);
    return SUCC;
}

int main(int argv, char *argc[])
{
    int *array = NULL;
    int length = 0;

    scanf("%d", &length);

    if (variable_length_array(&array, length) == SUCC)
    {
        for (int i = 0; i < length; i++)
        {
            printf("The index: %d, the content: %d, the address: %p.\n", i, array[i], array + i); // 断言所在行!
        }
    }
    else
    {
        fprintf(stderr, "Initiate array fail!\n");
        return 1;
    }
    return 0;
}

断言信息如下:
init_array.out: malloc.c:2427: 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.
Aborted

  • 写回答

2条回答 默认 最新

  • lunhui2016 2017-11-14 11:42
    关注

    除了看出你没释放内存之外,并没啥问题

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 #MATLAB仿真#车辆换道路径规划
  • ¥15 java 操作 elasticsearch 8.1 实现 索引的重建
  • ¥15 数据可视化Python
  • ¥15 要给毕业设计添加扫码登录的功能!!有偿
  • ¥15 kafka 分区副本增加会导致消息丢失或者不可用吗?
  • ¥15 微信公众号自制会员卡没有收款渠道啊
  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘