[英]C++: Saving a large binary file (2GB to 4GB) to RAM in a char*?
我正在使用C ++中的文件傳輸程序 ,它將文件轉換為二進制文件,將字節保存在char *中,然后通過TCP連接將該char *發送到另一台計算機。 然后,另一台計算機在本地重新創建文件。 該程序可以運行,但是我遇到了一個大文件的大問題! 我無法分配足夠的數組索引來包含字節! 例如,如果我要發送600MB的文件,則需要具有6億個索引的char *。 這可行。 但是,一旦我再提高一點,該程序就無法分配內存,並且會出現錯誤。
我的一個朋友建議我將文件拆分為多個塊,然后逐個塊地進行傳輸,但這會帶來很多其他挑戰,並且需要我基本上重寫整個程序。
有什么辦法可以解決這個問題?
我的一個朋友建議我將文件拆分為多個塊,然后逐個塊地進行傳輸,但這會帶來很多其他挑戰,並且需要我基本上重寫整個程序。
這就是為什么它被稱為計算機科學的原因,而且一旦您掌握了這些挑戰,便可以前往城市並賺大錢了。
我不知道轉換為binary的意思,但是您不必分配600MB +的內存,而應使用緩沖。
例如,要從磁盤發送文件:
您也可以使用內存映射(或Windows中的TransmitFile())。
如果您的數據需要轉換:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.