【发布时间】:2018-08-29 07:51:51
【问题描述】:
#include "stdafx.h"
#include <stdlib.h>
#include <time.h>
#define len 10
int *randomArray(void);
int main()
{
srand(time(NULL));
int *rArray = (int *)malloc(sizeof(int) * len);
rArray = randomArray();
for (int i = 0; i < len; i++) {
printf("%d ", *(rArray+i));
}
puts("");
free(rArray);
}
int *randomArray(void)
{
int array[len] = { 0 };
for (int i = 0; i < len; i++) {
array[i] = rand() % len;
}
return array;
}
任务是创建一个ints 的数组,并让一个函数用随机数填充该数组。函数randomArray() 工作得很好,但由于某种原因,赋值rArray = randomArray() 不能正常工作,尽管rArray 的某些元素是有效数字而不是乱码。此外,最后一条主线free(rArray); 使程序崩溃,这让我感到麻木,这没有任何意义。如果我删除该行,程序不会崩溃,但我们都知道您需要 free() 一个 malloc()-ed 数组。
【问题讨论】:
标签: c arrays segmentation-fault