On Friday, 15 January 2021 at 06:15:06 UTC, dog2002 wrote:

void func(string inputFile, string outFile, uint chunk_size) {
        try {
                File _inputFile = File(inputFile, "r");
                File _outputFile = File(outFile, "w");
                
                ubyte[] tempBuffer = _inputFile.rawRead(new ubyte[](512));
        
                //doing some operations with the tempBuffer     

                _outputFile.rawWrite(tempBuffer);
                
                _inputFile.seek(tempBuffer.length, SEEK_SET);
                
                
                foreach(_buffer; _inputFile.byChunk(chunk_size)) {
                        _outputFile.rawWrite(_buffer);
                }
                _inputFile.close();
                _outputFile.close();
        }
        catch (Throwable) {}

}

You can save a little bit of memory here by allocating tempBuffer on the stack:

    ubyte[512] tempBuffer;
    _inputFile.rawRead(tempBuffer[]); // note the explicit []

    // ...

    _outputFile.rawWrite(tempBuffer[]);

However, those allocations alone shouldn't be enough to get you to 4GB+, so the real issue is probably elsewhere.

Reply via email to