簡體   English   中英

C ++:將大的二進制文件(2GB至4GB)保存到char *中的RAM中嗎?

[英]C++: Saving a large binary file (2GB to 4GB) to RAM in a char*?

我正在使用C ++中的文件傳輸程序 ,它將文件轉換為二進制文件,將字節保存在char *中,然后通過TCP連接將該char *發送到另一台計算機。 然后,另一台計算機在本地重新創建文件。 該程序可以運行,但是我遇到了一個大文件的大問題! 我無法分配足夠的數組索引來包含字節! 例如,如果我要發送600MB的文件,則需要具有6億個索引的char *。 這可行。 但是,一旦我再提高一點,該程序就無法分配內存,並且會出現錯誤。

我的一個朋友建議我將文件拆分為多個塊,然后逐個塊地進行傳輸,但這會帶來很多其他挑戰,並且需要我基本上重寫整個程序。

有什么辦法可以解決這個問題?

我的一個朋友建議我將文件拆分為多個塊,然后逐個塊地進行傳輸,但這會帶來很多其他挑戰,並且需要我基本上重寫整個程序。

這就是為什么它被稱為計算機科學的原因,而且一旦您掌握了這些挑戰,便可以前往城市並賺大錢了。

我不知道轉換為binary的意思,但是您不必分配600MB +的內存,而應使用緩沖。

例如,要從磁盤發送文件:

  • 打開文件
  • 讀取緩沖區中文件的一部分
  • 通過TCP連接發送緩沖區(重復直到完成)

您也可以使用內存映射(或Windows中的TransmitFile())。

如果您的數據需要轉換:

  • 打開文件
  • 讀取緩沖區中的部分
  • 轉換緩沖區
  • 發送緩沖區(重復)

暫無
暫無

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

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