나는 for 루프를 가진 함수를 가지고 있고 루프 내부에 (그리고 입력에 따라) 어떤 변수는 malloc()
을 사용하여 한 번 (처음으로) 초기화된다.정적으로 동적으로 할당 된 포인터를 free()해야합니까?
이러한 변수는 다음과 같이 선언됩니다
static double *vector;
을 한 후 나는
malloc(size*sizeof(double));
사용하여 메모리를 할당 질문 :
내가 이러한 변수를 해제해야합니까 호출 된 함수 안의 루프의 마지막 반복?
업데이트 : 어쩌면 내가 어떤 사람들에게는 잘못을 설명했을 수도 있습니다. 것은 호출 된 함수 (func_A)가 주 함수에서 입력에 따라 사용하는 특정 벡터에 대한 메모리를 할당합니다. 그런 다음이 func_A는 주 루프의 루프에서 여러 번 호출됩니다. 그래서 변수를 정적으로 정의하여 func_A가 호출 될 때마다 (시간 소비에 대해) 정의되지 않도록합니다. 왜냐하면 치수가 전체 실행에서 변경되지 않기 때문입니다. 변수는 정적이지만 전역 변수가 아니므로 기본 변수에서 변수를 제거 할 수는 없습니다 (맞습니까?).
대답은 "다릅니다"입니다. 프로그램을 종료하기 전에 * 프로그램을 종료하기 전에 메모리를 비워야합니다. – DevSolar
더 이상 필요하지 않을 때 해제해야합니다. –
http://stackoverflow.com/questions/654754/what-really-happens-when-you-dont-free-after-malloc?rq=1 – jamesdlin