簡體   English   中英

緩沖區大小和文件讀取

[英]Buffer size and reading from a file

我已經問過一個類似的問題,但我認為現在的問題有所不同。我在Eclipse,Linux機器上用C語言編寫。

我需要讀取測試文件,並每次嘗試使用不同的緩沖區大小...如果緩沖區的大小太小,我知道我需要在緩沖區上運行幾次,但是我不確定如何執行此操作...

這是我的代碼(當即時消息在大小為67108864的緩沖區上運行時,我遇到了分段錯誤。*我編輯了代碼

int main(void)
{   int fd;
    char* buff = malloc (67108864);
    if (buff){
    fd = open("testfile.txt", O_RDONLY);
    if (fd >= 0) {
        while (read(fd,buff,67108864)!=0){}
        close(fd);
    }
    }
free(buff);
return 0;
}

這不是一個char[]

char* buff[67108864];

但是是char*的數組。 改成:

char buff[67108864];

另外, buff的大小可能對於堆疊來說太大。 堆棧的典型大小為1MB(1048576字節),但buff的大小遠遠超過(64MB!),這將導致堆棧溢出錯誤。 如果您希望使用此緩沖區的緩沖區,請使用malloc()動態分配它,並稍后使用free()釋放它:

char* buff = malloc(67108864);
if (buff)
{
    /* Use 'buff' and then release it. */

    free(buff);
}

刪除* ,您要聲明一個指針數組,但是需要一個字符數組。

   char buff[67108864];

我不確定67108864堆棧太大了。 嘗試使其在堆上。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM