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

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

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

Window程序的棧默認(rèn)大小是多少?

魚鷹談單片機(jī) ? 來(lái)源:嵌入式Linux ? 2023-10-07 09:19 ? 次閱讀

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

前兩天,微信群里就討論了這樣的問(wèn)題,大家對(duì)于棧和堆的理解,可以在評(píng)論去說(shuō)下自己的看法。

在 Window 下:

有些資料會(huì)說(shuō)明Window程序的棧默認(rèn)大小是2M,但我們討論了很久,并不知道2M大小是如何得來(lái)的。

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

wKgaomUgsmyANhAUAAAkJE2zuTw637.jpg

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

wKgZomUgsjuAdJTjAAIjDai0DzA295.jpg

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

wKgaomUgsjuAJ68zAAKUpKMEIwE191.jpg

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

wKgZomUgsjuANq1nAAPupEIy9EI087.jpg

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

wKgZomUgsjuANYMGAAHFobieI_s279.jpg

在 Linux 下:

Linux中測(cè)試棧的大小比較容易:

wKgaomUgspSASNqtAABqD4ZutBs414.jpg

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

wKgZomUgsjuAbkBOAANUp85kcws720.jpg

也可以查進(jìn)程信息

wKgZomUgsjuABEsgAAaRZO8eRVs221.jpg

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

wKgaomUgsjuAVwwZAAKS0iA6sko434.jpg

這里面有一個(gè)小技巧:

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

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

wKgaomUgsjuAVUFDAABY12qhP6Q801.jpg





審核編輯:劉清

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

    關(guān)注

    0

    文章

    82

    瀏覽量

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

    關(guān)注

    4

    文章

    593

    瀏覽量

    27397

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

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

收藏 人收藏

    評(píng)論

    相關(guān)推薦

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

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

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

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

    如何修改DSP大小

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

    請(qǐng)問(wèn)Z-Stack 協(xié)議SampleAPP默認(rèn)時(shí)鐘是多少MHZ?

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

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

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

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

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

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

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

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

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

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

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

    空間的大小如何分配

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

    怎樣去修改空間的大小

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

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

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

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

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

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

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

    修改空間的大小

    當(dāng)程序中的局部變量太多時(shí),可能會(huì)造成空間不夠用導(dǎo)致程序出錯(cuò),這個(gè)時(shí)候就需要修改空間的大小默認(rèn)
    發(fā)表于 12-20 18:53 ?1次下載
    修改<b class='flag-5'>棧</b>空間的<b class='flag-5'>大小</b>