Written by coh at home
동적메모리 예제 본문
앞서 작성한 정적 메모리 예제와 비교하면 말도 안 되게 memory usage를 아낄 수 있다.
#include<stdio.h>
#define _CRT_SECURE_NO_WARNINGS
#include<string.h>
#include<stdlib.h>
#define MAXNAME 64
int heapusage = 0;
typedef struct {
int age;
float score;
char *name;
}student;
//일일이 data입력하려면 귀찮으니 그냥 random variable로 지정.
void set_student(student* dst)
{
dst->age = rand() % 100;
dst->score = rand() % 100;
int nameLEN = rand() % MAXNAME;
dst->name = (char*)calloc(nameLEN, sizeof(char));
heapusage += sizeof(char) * nameLEN;
for (int i = 0; i < nameLEN; i++)
{
dst->name[i] = 'a' + rand() % 26;
}
}
int main(void)
{
int numstudent = 0;
printf("How many student? ");
scanf("%d", &numstudent);
student* students = (student*)malloc(sizeof(student) * numstudent);
memset(students, 0, sizeof(student) * numstudent);
heapusage += sizeof(student) * numstudent;
for (int i = 0; i < numstudent; i++)
{
set_student((students+i));
}
float avg = 0;
for (int i = 0; i < numstudent; i++)
{
//avg += studnets[i].score;
avg += (students+i)->score;
}
avg /= numstudent;
printf("Average acore =%.2f\n", avg);
for (int i=0;i<numstudent;i++)
//students[i].name
if ((students+i)->name)
{
free((students + i)->name);
(students + i)->name == NULL;
}
if (students)
{
free(students);
students = NULL;
}
printf("heap usage = %d\n", heapusage);
return 0;
}
'languages > c' 카테고리의 다른 글
보물지도 찾기. (0) | 2022.03.31 |
---|---|
c언어 data filter 만들기 (0) | 2022.03.29 |
동적메모리 (0) | 2022.03.24 |
정적 메모리 예제 (0) | 2022.03.24 |
.c file I/O studentDB.bin (0) | 2022.03.23 |