RM新时代网站-首页

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Window程序的棧默認大小是多少?

魚鷹談單片機 ? 來源:嵌入式Linux ? 2023-10-07 09:19 ? 次閱讀

無論在Window還是Linux上,我們寫代碼的時候,不管是應(yīng)用程序還是內(nèi)核,都有必要了解內(nèi)存的大小。當(dāng)然,也需要了解棧大小。

前兩天,微信群里就討論了這樣的問題,大家對于棧和堆的理解,可以在評論去說下自己的看法。

在 Window 下:

有些資料會說明Window程序的棧默認大小是2M,但我們討論了很久,并不知道2M大小是如何得來的。

首先我寫了一個測試程序來測試棧大小,結(jié)果如下:

wKgaomUgsmyANhAUAAAkJE2zuTw637.jpg

使用DEVC++執(zhí)行如下:

wKgZomUgsjuAdJTjAAIjDai0DzA295.jpg

看起來是接近2M,然后我們查了下資料,有一個比較官方的資料說明了棧的大小應(yīng)該是1M。

wKgaomUgsjuAJ68zAAKUpKMEIwE191.jpg

那我們測試出來的結(jié)果還是沒有找到原因,但是我們可以嘗試設(shè)置下程序的棧大小。

wKgZomUgsjuANq1nAAPupEIy9EI087.jpg

通過這樣設(shè)置后,可以看到測試出來的棧大小與設(shè)置的相符合的。

wKgZomUgsjuANYMGAAHFobieI_s279.jpg

在 Linux 下:

Linux中測試棧的大小比較容易:

wKgaomUgspSASNqtAABqD4ZutBs414.jpg

當(dāng)然,我們可以用命令來獲取堆棧大小或者設(shè)置堆棧大小。

wKgZomUgsjuAbkBOAANUp85kcws720.jpg

也可以查進程信息

wKgZomUgsjuABEsgAAaRZO8eRVs221.jpg

實驗下設(shè)置堆棧的大?。?/p>

wKgaomUgsjuAVwwZAAKS0iA6sko434.jpg

這里面有一個小技巧:

Once ulimit is set it can only be lowered never raised. ulimit

設(shè)置后,只能降低而不能提高。

wKgaomUgsjuAVUFDAABY12qhP6Q801.jpg





審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • Window
    +關(guān)注

    關(guān)注

    0

    文章

    82

    瀏覽量

    37263
  • Linux系統(tǒng)
    +關(guān)注

    關(guān)注

    4

    文章

    593

    瀏覽量

    27392

原文標(biāo)題:棧默認到底有多大~~

文章出處:【微信號:emOsprey,微信公眾號:魚鷹談單片機】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    ucos_ii 每個任務(wù)具體定義大小

    在ucos_ii 系統(tǒng)中,針對每個任務(wù)怎么來分配其大小。我在程序中對一個只是LED點亮的任務(wù),如果真是LED,大小為10就可以正常運行,如果增加一個消息隊列,再用10就不能運行,我
    發(fā)表于 04-30 17:43

    如何查看CC2530的z-stack協(xié)議程序大小?

    通常查看單片機程序大小是通過查看燒寫進單片機的HEX文件的大小而確定的,然而CC2530的z-stack協(xié)議程序的HEX文件并不能代表其
    發(fā)表于 09-26 11:09

    如何修改DSP大小

    代碼中涉及很大的變量,有的變量有好幾K,我不想都用全局變量和靜態(tài)變量,請問如何修改大小?
    發(fā)表于 05-28 08:12

    請問Z-Stack 協(xié)議SampleAPP默認時鐘是多少MHZ?

    本帖最后由 一只耳朵怪 于 2018-6-1 15:22 編輯 Z-Stack 協(xié)議SampleAPP默認時鐘是多少MHZ?
    發(fā)表于 06-01 07:14

    請問stm32區(qū)和堆區(qū)的如何設(shè)置大小

    我在stm32f103c8 20k ram上跑著RT-Thread系統(tǒng)最近一直有個問題跑個半小時片子就死掉了。代碼中找不到問題現(xiàn)在懷疑是ram不夠用。下邊截圖是程序便宜完之后打各項內(nèi)容的大小和代碼
    發(fā)表于 12-17 08:48

    ThreadX任務(wù)大小的確定方法以及溢出檢測方法

    第10章 ThreadX任務(wù)大小確定及其溢出檢測本章節(jié)為大家講解ThreadX任務(wù)大小的確定方法以及溢出檢測方法。給任務(wù)分配多大的
    發(fā)表于 08-04 08:59

    講解ThreadX任務(wù)大小的確定方法以及溢出檢測方法

    第10章 ThreadX任務(wù)大小確定及其溢出檢測本章節(jié)為大家講解ThreadX任務(wù)大小的確定方法以及溢出檢測方法。給任務(wù)分配多大的
    發(fā)表于 08-09 06:30

    如何確定ThreadX任務(wù)大小

    如何確定ThreadX任務(wù)大小呢?什么是溢出呢?怎樣去檢測ThreadX的溢出呢?
    發(fā)表于 10-14 07:42

    堆和的區(qū)別是什么

    在回答完進程的虛擬地址空間布局之后(上一篇),面試官可能抓住堆和深入展開。堆和的區(qū)別①管理方式:由編譯器自動管理;堆由程序員控制,使用方便,但易產(chǎn)生內(nèi)存泄露。②生長方向:
    發(fā)表于 12-22 07:26

    空間的大小如何分配

    分散加載文件中都有定義堆??臻g大小,堆空間一般由程序員使用malloc函數(shù)動態(tài)分配的,因此堆空間大小一般都會根據(jù)實際情況自行確定。是一塊用于存儲
    發(fā)表于 01-27 07:20

    怎樣去修改空間的大小

    當(dāng)程序中的局部變量太多時,可能會造成空間不夠用導(dǎo)致程序出錯,這個時候就需要修改空間的大小默認
    發(fā)表于 02-16 07:10

    關(guān)于Linux跨網(wǎng)絡(luò)運行X Window程序

    關(guān)于Linux跨網(wǎng)絡(luò)運行X Window程序   X Window在設(shè)計上就是跨網(wǎng)絡(luò)的,X Client是需要圖形顯示的應(yīng)用程序, X Server則負責(zé)具體顯示和傳遞用戶
    發(fā)表于 04-01 16:49 ?640次閱讀

    如何為程序分配合適的空間?

    分散加載文件中都有定義堆棧空間大小,堆空間一般由程序員使用malloc函數(shù)動態(tài)分配的,因此堆空間大小一般都會根據(jù)實際情況自行確定。是一塊用于存儲
    發(fā)表于 12-03 14:36 ?5次下載
    如何為<b class='flag-5'>程序</b>分配合適的<b class='flag-5'>棧</b>空間?

    STM32堆空間大小設(shè)置

    1. 設(shè)置堆??臻g大小在使用STM32編程時,一般情況下我們不會關(guān)注堆棧空間的大小,因為在STM32的啟動文件中,已經(jīng)幫我們預(yù)先設(shè)置好了堆??臻g的大小。如下圖所示的啟動代碼中,Stack
    發(fā)表于 12-17 18:36 ?12次下載
    STM32堆<b class='flag-5'>棧</b>空間<b class='flag-5'>大小</b>設(shè)置

    修改空間的大小

    當(dāng)程序中的局部變量太多時,可能會造成空間不夠用導(dǎo)致程序出錯,這個時候就需要修改空間的大小默認
    發(fā)表于 12-20 18:53 ?1次下載
    修改<b class='flag-5'>棧</b>空間的<b class='flag-5'>大小</b>
    RM新时代网站-首页