場合によっては、次のコードが機能します。これは、おそらく良い概念ですが、実行が不十分であることを意味します。これはビットが落ちた場所によってはクラッシュするので、これは私が途中で一歩を踏み出していることを意味します。bufferdata
から<=4096バイトで埋めるエレガントな方法を見つけることに興味がありますbuffer
が、確かに、これはそうではありません。
編集:私が受け取るエラーは、bufferdataへの不正アクセスです
unsigned char buffer[4096] = {0};
char *bufferdata;
bufferdata = (char*)malloc(4096 * sizeof(*bufferdata));
if (! bufferdata)
return false;
while( ... )
{
// int nextBlock( voidp _buffer, unsigned _length );
read=nextBlock( buffer, 4096);
if( read > 0 )
{
memcpy(bufferdata+bufferdatawrite,buffer,read);
if(read == 4096) {
// let's go for another chunk
bufferdata = (char*)realloc(bufferdata, ( bufferdatawrite + ( 4096 * sizeof(*bufferdata)) ) );
if (! bufferdata) {
printf("failed to realloc\n");
return false;
}
}
}
else if( read<0 )
{
printf("error.\n");
break;
}
else {
printf("done.\n");
break;
}
}
free(bufferdata);