【发布时间】:2020-05-30 18:37:58
【问题描述】:
所以我正在学习并试图弄清楚 c 中的内存分配,在这段代码中,内存分配是否正确?我是否也需要分配数组,还是因为用户输入的所有内容都进入数组(将存储在数组中)而导致数组已经分配?
#include <stdio.h>
#include <stdlib.h>
int main() {
int i;
int arr[20];
int b;
int *ptr;
ptr = &b;
ptr = (int*) malloc(20 *sizeof(int));
//find largest element in array
printf("Enter the number of elements: ");
scanf("%d", &b);
if(ptr == NULL)
{
printf(" No memory allocated.");
exit(0);
}
for (i = 0; i < b; ++i) {
printf("Enter number%d: ", i + 1);
scanf("%d", &arr[i]);
}
for (i = 1; i < b; ++i) {
if (arr[0] < arr[i])
arr[0] = arr[i];
}
free(ptr);
printf("Largest element = %d", arr[0]);
return 0;
}
【问题讨论】:
-
您分配内存但不使用它。 arr 和 ptr 没有任何关系
标签: c memory memory-management