malloc으로 만든 동적 메모리 객체의 크기를 늘리는 함수를 작성하고 있습니다. 이 함수는 인수가 증가 할 메모리 블록에 대한 포인터, 블록의 현재 크기 및 블록 증가량을 가져야합니다. 이 같은C를 사용하여 같은 함수에서 여러 가지 유형의 크기를 얻는 방법은 무엇입니까?
뭔가 :
int getMoreSpace(void **pnt, int size, int add) {
xxxxxx *tmp; /* a pointer to the same as pnt */
if (tmp = realloc(pnt, (size+add)*sizeof(xxxxxx))) { /* get size of what pnt points to */
*pnt=tmp;
return 1;
else return 0;
}
문제는 그 기능에 상관없이 무엇을 PNT 포인트를 작동하지 할 것입니다. 어떻게해야합니까?
나는 당신이 말하는 것을 정말로 얻지 못합니다. pnt가 지역적으로 중요한 이유는 무엇입니까? 함수가 반환 될 때까지만 필요합니다. 또한이 래퍼가 왜 위험합니까? 다른 종류의 상황에서 내 프로그램에서이 종류의 크기 증가를 몇 번하고 있습니다.이 기능을 사용하면 훨씬 더 깨끗하고 단순 해집니다. 왜냐하면 동일한 시간에 많은 시간을 입력하지 않아도되기 때문입니다. 어쨌든 기능의?). – paldepind
100 % 확신 할 수는 없지만 C에 '로컬'포인터가 없다고 생각합니다. –
@Stefanos : 함수 인수는 함수가 반환 할 때 범위를 벗어나는 "로컬 변수"입니다. . 'ptr'에 새로운 값을 할당해도 효과가 없습니다; 실제로 컴파일러는 할당을 최적화 할 수 있고 최적화해야합니다. –