본문 바로가기

카테고리 없음

c/c++ 동적 메모리 할당과 메모리 표준함수

static은 시스템이 알아서 할당하고 돌려주고, heap은 내가 할당하고 싶은 만큼 할당하고 돌려준다.

 

 

** 위의 코드가 에러나는 이유:

런타임에 입력 받은 변수를 컴파일 타임에 대입하는 형태는 논리에 맞지 않는다. 

프리를 안하면 메모리 유수가 된다.

#include <stdio.h>
#include <stdlib.h>

int main()
{
int num;
int* student;

fputs("학생수를 입력하세요 : ", stdout);
scanf_s("%d", &num);

student = (int*)malloc(sizeof(int) * num);

if (student == NULL)
{
printf("메모리가 부족하여 할동할수 없습니다.\n");
return 0;
}

printf("할돵된 메모리는 %d입니다.\n", sizeof(int) * num);
free(student);

return 0;
}


//동적 메모리 할당 
int main()
{
int num, i, total = 0;
int* student;

fputs("학생수를 입력하세요:", stdout);
scanf_s("%d", &num);
student = (int*)malloc(sizeof(int) * num);
if (student == NULL)
{
printf("메모리가 부족하여 할동할수 없습니다.\n");
return 0;
}
for (i = 0; i < num; i++)
{
printf("%d 번째 학생의 성적 입력:.\n", i+1);
scanf_s("%d", &student[i]);
}
for (i = 0; i < num; i++)
{
total += student[i];
}

printf("총점: %d, 평균: %d \n", total, total / num);
free(student);
return 0;
}