C 언어의 동적 크기 배열
다음 C 코드를 고려하세요.
<br>int siz = 0;<br>int n = 0;<br>FILE* 그림;</p> <p>picture = fopen("test.jpg", "r");<br>fseek(picture, 0, SEEK_END);<br>siz = ftell(picture );</p> <p>char Sbuf[siz]; // 오류: 가변 길이 배열<br>fseek(picture, 0, SEEK_SET);<br>while (!feof(picture)) {</p> <pre class="brush:php;toolbar:false">n = fread(Sbuf, sizeof(char), siz, picture); // do stuff with the buffer // memset(Sbuf, 0, sizeof(Sbuf));
}
이 코드의 목표는 파일의 내용을 버퍼로 읽어들이는 것이지만, 버퍼의 크기는 파일이 열리고 크기가 결정됩니다. 그러나 C 언어에서는 가변 길이 배열 선언을 허용하지 않습니다.
가변 길이 배열의 대안
이 문제를 해결하기 위한 몇 가지 대안이 있습니다:
<br>std::Vector<char> Sbuf;</li></ul> <p>Sbuf.push_back(someChar);<br>
<br>char* Sbuf = new char[siz];</li></ul> <p>delete [] Sbuf; // 완료 시 메모리 할당 해제<br>
고려 사항
동적 할당은 가변 크기 배열을 생성하는 방법을 제공하지만 다음과 같은 기능을 제공합니다. 몇 가지 주의 사항:
결론
가변 길이이긴 하지만 C에서는 배열이 지원되지 않으므로 저장할 데이터의 크기에 맞게 조정할 수 있는 동적 배열을 만드는 데 사용할 수 있는 몇 가지 대체 접근 방식이 있습니다. 프로젝트의 특정 요구 사항과 제약 조건에 따라 가장 적합한 옵션을 선택하는 것이 중요합니다.
위 내용은 알 수 없는 크기의 파일을 처리하기 위해 C에서 동적 크기의 배열을 어떻게 만들 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!