c 怎麼開乙個10 9的陣列

時間 2021-06-03 01:28:06

1樓:

之前搞acm這種問題遇到很多,資料動不動就是過億的,我們一般都統一全域性分配,在函式裡分配都會出問題,現在已經忘了堆和棧的區別了

2樓:

malloc(N) 是申請了N個Byte的空間,不是N個int的空間,所以應該是malloc(sizeof(int) * N)

3樓:天象

最簡單的方法其實不是new或malloc,是把這個陣列寫進全域性變數裡。

inta

[1000000000

];int

main

()全域性變數都是在堆裡的。我應試都這麼寫。

4樓:

先吐槽 10^9 == 3

---int*a

=new

int[3];

int*a=

(int*)

malloc(3

*sizeof

(int

));都可以

5樓:劉洪澎

malloc分配的是N位元組的記憶體,但是乙個int占用4位元組。陣列實際大小最多N/4,當然會越界了。

不過這個越界發生的位置為什麼是2500600就不知道了。

6樓:毛草

這種問題必須要用乙個使用鍊錶實現的sparse matrix吧。

如果你的需求比較簡單的話不妨自己寫乙個,也不難;如果需要實現複雜運算的話,可以看看這個問題——答案裡有若干個不錯的庫,你可以試一試。

linear algebra

我錯了,想太多是病,得治

還有,C++不應該用malloc!!這是邪道!!!!

7樓:Bingo

簡單點就執行時new

搞高階一點可以試試一口氣要來4g記憶體按對齊去分配就完事了就乙個簡單的記憶體池

不過題主這個編譯錯誤好像不是10^9的問題吧

8樓:

如果你在用windows,靜態全域性這種就不要想了,exe本身結構決定了不可能。

你可以編成64位程式,執行時去new乙個。

怎麼樣寫乙個C 程式,刪除一維陣列中的重複資料,使陣列中的資料各不相同?

張強 排序,氣泡排序會寫吧?稍微改一改就可以寫乙個去重程式了 語言描述一下,程式你自己寫了 先設定skip 0 當i位置時,從i skip 1 n中選最大 小的,如果i 0並且這個資料和i 1的資料相等,就是重複了,skip 下一輪i不增加,直接從i skip 1 n中選最大 小的,迴圈 如果沒有重...

java中乙個空陣列與乙個長度為0的陣列有什麼區別呀?

剷草除根 主要在客戶端呼叫的稍微有點區別。public int getNum 這樣寫呼叫的時候不用做非空判斷。public int getNum 這樣寫還需要做非空判斷。 我是派大星 空陣列如果是指數組變數引用為空的話,也就是意味著它就是個單純的陣列變數存在於棧空間,但是如果是長度為0的陣列就不一樣...

如何使用C 編寫乙個模板,可以同時適用於陣列和vector int 型別且避免資料的複製?

rayhunter 這個問題有意思,大佬們說的對。本身就應該寫兩個函式,但是非要從技術角度看。我想到的是傳位址解決拷貝問題,然後用引數自動推導,求得陣列大小 N模板特化來分支 仿函式,過載 操作,勉強滿足樓主要求。template T class SortFunctor template intN ...