gpt4 book ai didi

c - C 中的内存泄漏?

转载 作者:太空宇宙 更新时间:2023-11-04 02:18:20 25 4
gpt4 key购买 nike

我目前正在学习用 C 语言编程。在我的一项任务中,我必须制作一个直方图(通过基本控制台输出绘制,如下所示:http://img703.imageshack.us/img703/448/histogram.jpg)来测量一个字符的数量文本文件(此作业的标准大小为 1.3 MB)。我确实做了这样的功能:

int *yAxisAverageMethod(int average, int max, int min)
{
int *yAxis;
int i=0;
for (i=0;i<20;i++)
{
*(yAxis+i)=0;
}
/*
int length=sizeof(data)/sizeof(int);
*/
int lower_half_interval=average/10;
int upper_half_interval=(max-average)/10;
int current_y_value=min;
for (i=0;i<11;i++)
{
if (i==10){
*(yAxis+10)=average;
break;
}
*(yAxis+i)=current_y_value;
current_y_value+=lower_half_interval;
}
current_y_value+=average+upper_half_interval;
printf("Current y value:%d\n",current_y_value);
printf("Current max value:%d\n",max);
for (i=11;i<20;i++)
{
*(yAxis+i)=current_y_value;
current_y_value+=upper_half_interval;
}

return yAxis;
}

在这个函数中,我打算返回一个包含 20 个整数的数组,以便制作一个 y 轴。我找到所有字符的平均值,然后使用 20 行控制台来显示它。下10行用于显示字符总数低于平均值的部分,10行用于显示上部。下半部分y轴每一步的计算方式为(average - min)/10,上半部分y轴每一步的计算方式为(max - average)/10。这是我绘制直方图的方法,因为我想显示值之间的变化。

在 main 方法中,我有这个函数调用:

int *yAxis;
yAxis=yAxisAverageMethod(average,max,min);

我在运行该函数时遇到了段错误。在 netbean GCC++ 编译器中,它工作正常。然而,当我在大学机器上运行它时(我必须在命令行上编译它并在 Vi 中编辑),我得到了错误。我猜是因为 Netbean 有自己的内存管理器?我不明白。

已编辑:我将在另一个问题中询问合并排序。

最佳答案

*yAxis 是一个野指针。您永远不会为要使用的 int 数组分配内存。

int *yAxis = malloc(sizeof(int) * 20);

关于c - C 中的内存泄漏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4215862/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com