의는이 코드가 있다고 가정하자 다른 곳에서는 사용하고 각 for
주기는 서로 독립적입니다하지에 할당 된 포인터 : 해제해야합니까?
for (int i=0;i<n;i++) {
//compute z
float *p = (float *) malloc (sizeof(float)*z);
//do something with p
}
공지 사항 p
있다.
z
너무 큰 아니라고 가정하자, 그래서
단일
p
는 memmory의 측면에서 비싼 없습니다. 그러나
n
은 잠재적으로 크므로
p
이 차지하는 전체 메모리가 일정 할 수 있습니다.
인가 그것은 올바른와
free()
을에 :
for (int i=0;i<n;i++) {
//compute z
float *p = (float *) malloc (sizeof(float)*z);
//do something with p
free(p);
}
보너스 질문 : 시간 성능이 우선 순위 (그리고 메모리 소비)가 소요되는 시간 이후의 free(p)
을 피하기 위해 더 나을 것 경우 ?
왜 C++ 태그가 여기 있습니까? –
@EdgarRokyan 네 말이 맞아. – justHelloWorld