คำถามติดแท็ก stack

สแต็กเป็นชนิดข้อมูลนามธรรมและโครงสร้างข้อมูลสุดท้ายเข้าก่อนออกก่อน (LIFO) สำหรับคำถามเกี่ยวกับ call stack ให้ใช้ [callstack] หรือ [stack-pointer] แทน สำหรับคำถามเกี่ยวกับเครื่องมือสร้าง Haskell ให้ใช้ [haskell-stack] แทน สำหรับคำถามเกี่ยวกับสแต็กมาตรฐานใน C ++ ให้ใช้ [stdstack] แทน

8
อาร์เรย์ฮีปและสแต็กและชนิดของค่า
int[] myIntegers; myIntegers = new int[100]; ในโค้ดด้านบน int [100] ใหม่กำลังสร้างอาร์เรย์บนฮีปหรือไม่ จากสิ่งที่ฉันได้อ่านเกี่ยวกับ CLR ผ่าน c # คำตอบคือใช่ แต่สิ่งที่ฉันไม่เข้าใจคือสิ่งที่เกิดขึ้นกับ int จริงภายในอาร์เรย์ เนื่องจากเป็นประเภทค่าฉันจึงเดาว่าพวกเขาจะต้องอยู่ในกล่องอย่างที่ฉันทำได้เช่นส่ง myIntegers ไปยังส่วนอื่น ๆ ของโปรแกรมและมันจะทำให้สแต็คยุ่งเหยิงหากพวกเขาถูกทิ้งไว้ตลอดเวลา . หรือว่าฉันผิด? ฉันเดาว่าพวกมันเพิ่งถูกบรรจุกล่องและจะอยู่บนกองได้นานเท่าที่อาร์เรย์มี
136 c#  arrays  memory  stack  heap 

11
Android: ล้างกองกิจกรรม
ฉันมีกิจกรรมหลายอย่างในใบสมัคร และการไหลมีความซับซ้อนมาก เมื่อฉันคลิกแอปพลิเคชัน Logout จะไปที่หน้าจอเข้าสู่ระบบและจากนั้นผู้ใช้สามารถออกโดยปุ่มยกเลิก (โทรsystem.exit(0)) เมื่อฉันออกหรือปุ่มย้อนกลับระบบจะเรียกกิจกรรมจากสแต็ก :( ฉันจะล้างกิจกรรมทั้งหมดในสแต็กได้อย่างไรเมื่อฉันไปถึงหน้าจอเข้าสู่ระบบการโทรfinish()ไม่สามารถใช้งานได้จริงเนื่องจากมีกิจกรรมมากมายและไม่ควรปิดกิจกรรมบางอย่างเมื่อ มีการใช้งานเช่นกิจกรรมเรียกใช้กล้องเนทีฟ validateuser logoutuser = new validateuser(); logoutuser.logOut(); Intent loginscreen = new Intent(homepage.this, Login2.class); (homepage.this).finish(); loginscreen.setFlags( Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NO_HISTORY); startActivity(loginscreen);

11
ความแตกต่างพื้นฐานระหว่างสแต็กและคิวคืออะไร?
ความแตกต่างพื้นฐานระหว่าง stack กับ que คืออะไร ?? โปรดช่วยฉันด้วยฉันไม่พบความแตกต่าง วิธีการทำคุณความแตกต่างและสแต็คคิว? ฉันค้นหาคำตอบในลิงค์ต่างๆและพบคำตอบนี้ .. ในการเขียนโปรแกรมระดับสูง สแต็กถูกกำหนดให้เป็นรายการหรือลำดับขององค์ประกอบที่ยาวขึ้นโดยการวางองค์ประกอบใหม่ "ที่ด้านบน" ขององค์ประกอบที่มีอยู่และทำให้สั้นลงโดยการลบองค์ประกอบออกจากด้านบนขององค์ประกอบที่มีอยู่ เป็น ADT [ชนิดข้อมูลบทคัดย่อ] ที่มีการคำนวณทางคณิตศาสตร์เป็น "push" และ "pop" คิวคือลำดับขององค์ประกอบที่ถูกเพิ่มเข้าไปโดยการวางองค์ประกอบใหม่ไว้ที่ด้านหลังของที่มีอยู่และทำให้สั้นลงโดยการลบองค์ประกอบที่อยู่ด้านหน้าคิว มันเป็น ADT [ชนิดข้อมูลบทคัดย่อ] มีคำศัพท์เหล่านี้ที่เข้าใจมากขึ้นในการเขียนโปรแกรม Java, C ++, Python และอื่น ๆ ฉันขอคำตอบที่ละเอียดกว่านี้ได้ไหม โปรดช่วยฉันด้วย
130 stack  queue 

8
Java / Android - จะพิมพ์การติดตามสแต็กแบบเต็มได้อย่างไร
ใน Android (Java) ฉันจะพิมพ์สแต็กเทรซแบบเต็มได้อย่างไร หากแอปพลิเคชันของฉันขัดข้องจาก nullPointerException หรือบางสิ่งบางอย่างแอปพลิเคชันจะพิมพ์การติดตามสแต็กเต็ม (เกือบ) แบบเต็มดังนี้: java.io.IOException: Attempted read from closed stream. com.android.music.sync.common.SoftSyncException: java.io.IOException: Attempted read from closed stream. at com.android.music.sync.google.MusicSyncAdapter.getChangesFromServerAsDom(MusicSyncAdapter.java:545) at com.android.music.sync.google.MusicSyncAdapter.fetchDataFromServer(MusicSyncAdapter.java:488) at com.android.music.sync.common.AbstractSyncAdapter.download(AbstractSyncAdapter.java:417) at com.android.music.sync.common.AbstractSyncAdapter.innerPerformSync(AbstractSyncAdapter.java:313) at com.android.music.sync.common.AbstractSyncAdapter.onPerformLoggedSync(AbstractSyncAdapter.java:243) at com.google.android.common.LoggingThreadedSyncAdapter.onPerformSync(LoggingThreadedSyncAdapter.java:33) at android.content.AbstractThreadedSyncAdapter$SyncThread.run(AbstractThreadedSyncAdapter.java:164) Caused by: java.io.IOException: Attempted read from closed stream. at org.apache.http.impl.io.ChunkedInputStream.read(ChunkedInputStream.java:148) at org.apache.http.conn.EofSensorInputStream.read(EofSensorInputStream.java:159) at java.util.zip.GZIPInputStream.readFully(GZIPInputStream.java:212) …

9
จะเพิ่มขนาด Java stack ได้อย่างไร?
ฉันถามคำถามนี้เพื่อทำความรู้จักวิธีเพิ่มขนาดรันไทม์ call stack ใน JVM ฉันมีคำตอบสำหรับเรื่องนี้และฉันยังมีคำตอบและความคิดเห็นที่เป็นประโยชน์มากมายที่เกี่ยวข้องกับวิธีที่ Java จัดการกับสถานการณ์ที่จำเป็นต้องใช้สแต็กรันไทม์ขนาดใหญ่ ฉันขยายคำถามของฉันพร้อมกับสรุปคำตอบ เดิมทีฉันต้องการเพิ่มขนาดสแต็ก JVM เพื่อให้โปรแกรมต่างๆทำงานโดยไม่มีไฟล์StackOverflowError. public class TT { public static long fact(int n) { return n < 2 ? 1 : n * fact(n - 1); } public static void main(String[] args) { System.out.println(fact(1 << 15)); } } การตั้งค่าคอนฟิกูเรชันที่สอดคล้องกันคือjava -Xss...แฟล็กบรรทัดคำสั่งที่มีค่ามากเพียงพอ สำหรับโปรแกรมTTด้านบนจะทำงานเช่นนี้กับ JVM …

10
การใช้งาน stack และ heap ที่เหมาะสมใน C ++?
ฉันเขียนโปรแกรมมาระยะหนึ่งแล้ว แต่ส่วนใหญ่เป็น Java และ C # ฉันไม่เคยต้องจัดการหน่วยความจำด้วยตัวเองเลย ฉันเพิ่งเริ่มเขียนโปรแกรมใน C ++ และฉันรู้สึกสับสนเล็กน้อยว่าเมื่อใดที่ฉันควรจัดเก็บสิ่งต่างๆบนสแต็กและเมื่อใดที่จะเก็บไว้ในฮีป ความเข้าใจของฉันคือตัวแปรที่ถูกเข้าถึงบ่อยมากควรถูกเก็บไว้ในสแต็กและอ็อบเจกต์ตัวแปรที่ไม่ค่อยได้ใช้และโครงสร้างข้อมูลขนาดใหญ่ทั้งหมดควรถูกเก็บไว้ในฮีป นี่ถูกต้องหรือฉันไม่ถูกต้อง?

30
ออกแบบสแต็กที่ getMinimum () ควรเป็น O (1)
นี่เป็นหนึ่งในคำถามสัมภาษณ์ คุณต้องออกแบบสแต็กที่เก็บค่าจำนวนเต็มเพื่อให้ฟังก์ชัน getMinimum () ส่งคืนองค์ประกอบต่ำสุดในสแต็ก ตัวอย่างเช่นพิจารณาตัวอย่างด้านล่าง กรณีที่ # 1 5 -> ด้านบน 1 4 6 2 เมื่อเรียกว่า getMinimum () ควรส่งคืน 1 ซึ่งเป็นองค์ประกอบขั้นต่ำ ในกอง กรณีที่ # 2 stack.pop () stack.pop () หมายเหตุ: ทั้ง 5 และ 1 จะดึงออกมาจากสแต็ก ดังนั้นหลังจากนี้กอง ดูเหมือนกับ, 4 -> ด้านบน 6 2 เมื่อเรียก getMinimum () ควรส่งคืน 2 ซึ่งเป็นค่าต่ำสุดใน ซ้อนกัน. …

8
ซ้อน DIVs อยู่ด้านบนของกันและกัน?
เป็นไปได้หรือไม่ที่จะซ้อน DIV หลายรายการเช่น: <div> <div></div> <div></div> <div></div> <div></div> </div> เพื่อให้ DIV ภายในทั้งหมดมีตำแหน่ง X และ Y เท่ากัน? โดยค่าเริ่มต้นพวกเขาทั้งหมดจะอยู่ด้านล่างซึ่งกันและกันโดยเพิ่มตำแหน่ง Y ตามความสูงของ DIV ก่อนหน้าล่าสุด ฉันรู้สึกว่าลอยหรือโชว์หรือกลเม็ดอื่น ๆ อาจกัดได้? แก้ไข: DIV หลักมีตำแหน่งที่สัมพันธ์กันดังนั้นการใช้ตำแหน่งสัมบูรณ์ดูเหมือนจะไม่ได้ผล
116 css  html  stack  css-float 

6
ขนาดสแต็กสูงสุดของโปรแกรม C / C ++
ฉันต้องการทำ DFS บนอาร์เรย์ 100 X 100 (พูดว่าองค์ประกอบของอาร์เรย์แสดงถึงโหนดกราฟ) ดังนั้นสมมติว่ากรณีที่เลวร้ายที่สุดความลึกของการเรียกฟังก์ชันแบบเรียกซ้ำอาจสูงถึง 10,000 โดยการเรียกแต่ละครั้งใช้เวลาไม่เกิน 20 ไบต์ ดังนั้นจึงเป็นไปได้ว่ามีความเป็นไปได้ที่จะเกิด stackoverflow หรือไม่? ขนาดสูงสุดของสแต็กใน C / C ++ คืออะไร? โปรดระบุสำหรับ gcc สำหรับทั้ง 1) cygwin บน Windows 2) Unix ข้อ จำกัด ทั่วไปคืออะไร?
115 c++  c  stack 

8
เธรดมีฮีปที่แตกต่างกันหรือไม่?
เท่าที่ฉันรู้ว่าแต่ละเธรดได้รับสแต็กที่แตกต่างกันเมื่อเธรดถูกสร้างขึ้นโดยระบบปฏิบัติการ ฉันสงสัยว่าแต่ละเธรดมีฮีปที่แตกต่างกันหรือไม่?

2
คุณจะดึงข้อมูลตัวแปรโลคัล (ที่อยู่และประเภท) จากโปรแกรม Delphi หรือข้อมูลดีบักที่สร้างโดยคอมไพเลอร์ได้อย่างไร
เป้าหมายของฉันคือ: ให้เธรดที่ถูกระงับในโปรแกรม Windows 32 หรือ 64 บิตที่คอมไพล์เดลฟีเพื่อเดินสแต็ก (doable) กำหนดรายการสแต็กเพื่อแจกแจงตัวแปรโลคัลในแต่ละวิธีและค่าของตัวแปร นั่นคืออย่างน้อยที่สุดให้ค้นหาที่อยู่และประเภทของพวกเขา (จำนวนเต็ม 32/64 / ลงนาม / ไม่ได้ลงนาม, สตริง, ลอย, บันทึก, คลาส ... ) ชุดค่าผสมที่สามารถใช้เพื่อค้นหาค่าได้ ข้อแรกใช้ได้ดีและเป็นคำถามที่สองเกี่ยวกับคำถามนี้ ในระดับสูงคุณจะแจกแจงตัวแปรโลคัลจากรายการสแต็กใน Delphi ได้อย่างไร ในระดับต่ำนี่คือสิ่งที่ฉันกำลังตรวจสอบ: RTTI:ไม่แสดงรายการข้อมูลประเภทนี้เกี่ยวกับวิธีการ นี่ไม่ใช่สิ่งที่ฉันเคยคิดว่าเป็นตัวเลือกที่สมจริง แต่มีรายชื่ออยู่ที่นี่ ข้อมูลการดีบัก:กำลังโหลดข้อมูลการดีบักที่สร้างขึ้นสำหรับรุ่นดีบัก ไฟล์แผนที่: แม้แต่ไฟล์แผนที่โดยละเอียด (ไฟล์รูปแบบข้อความ! เปิดไฟล์หนึ่งแล้วดู) ไม่มีข้อมูลตัวแปรในเครื่อง โดยทั่วไปจะเป็นรายการที่อยู่และหมายเลขบรรทัดไฟล์ต้นฉบับ เหมาะสำหรับการระบุแอดเดรสกับไฟล์และความสัมพันธ์ของเส้นเช่นจุดสีน้ำเงินในรางน้ำ ไม่ดีสำหรับข้อมูลรายละเอียดเพิ่มเติม ข้อมูลการดีบักระยะไกล (ไฟล์ RSM) - ไม่มีข้อมูลที่ทราบเกี่ยวกับเนื้อหาหรือรูปแบบ ไฟล์ TD32 / TDS:สายงานวิจัยปัจจุบันของฉัน มีสัญลักษณ์ทั่วโลกและในท้องถิ่นท่ามกลางข้อมูลอื่น …

9
ทิศทางของการเติบโตแบบสแต็กในระบบสมัยใหม่ส่วนใหญ่เป็นอย่างไร?
ฉันกำลังเตรียมเอกสารการฝึกอบรมบางอย่างในภาษา C และฉันต้องการให้ตัวอย่างของฉันพอดีกับแบบจำลองกองซ้อนทั่วไป C stack เติบโตไปในทิศทางใดใน Linux, Windows, Mac OSX (PPC และ x86), Solaris และ Unixes ล่าสุด

2
เหตุใดขนาดสแต็กใน C # จึงเท่ากับ 1 MB
พีซีในปัจจุบันมี RAM จริงจำนวนมาก แต่ขนาดสแต็กของ C # มีเพียง 1 MB สำหรับกระบวนการ 32 บิตและ 4 MB สำหรับกระบวนการ 64 บิต ( ความจุกองใน C # ) ทำไมขนาดสแต็กใน CLR จึงยังมี จำกัด แล้วทำไมถึงเป็น 1 MB (4 MB) (ไม่ใช่ 2 MB หรือ 512 KB) เหตุใดจึงตัดสินใจใช้เงินจำนวนนี้ ฉันสนใจข้อพิจารณาและเหตุผลเบื้องหลังการตัดสินใจนั้น
102 c#  stack  clr  stack-size 

5
ฟังก์ชั่นของคำสั่ง push / pop ที่ใช้กับ register ใน x86 assembly คืออะไร?
เมื่ออ่านเกี่ยวกับแอสเซมเบลอร์ฉันมักจะเจอคนเขียนว่าพวกเขาดันรีจิสเตอร์ของโปรเซสเซอร์และเปิดขึ้นมาอีกครั้งในภายหลังเพื่อกู้คืนสถานะก่อนหน้า คุณจะกดลงทะเบียนได้อย่างไร? มันดันอยู่ตรงไหน? เหตุใดจึงจำเป็น สิ่งนี้ทำให้คำสั่งโปรเซสเซอร์ตัวเดียวเดือดหรือซับซ้อนกว่านี้หรือไม่?

10
ทำไมสแต็กจึงเติบโตลง
ฉันรู้ว่าในสถาปัตยกรรมที่ฉันคุ้นเคยเป็นการส่วนตัว (x86, 6502 ฯลฯ ) โดยทั่วไปสแต็กจะเติบโตลง (กล่าวคือทุกรายการที่ถูกผลักลงในสแต็กจะส่งผลให้ SP ลดลงไม่ใช่เพิ่มขึ้น) ฉันสงสัยเกี่ยวกับเหตุผลทางประวัติศาสตร์สำหรับเรื่องนี้ ฉันรู้ว่าในพื้นที่ที่อยู่แบบรวมนั้นสะดวกในการเริ่มต้นสแต็กที่ปลายด้านตรงข้ามของส่วนข้อมูล (พูด) ดังนั้นจะมีปัญหาหากทั้งสองฝ่ายชนกันตรงกลาง แต่ทำไมสแต็กจึงได้ส่วนบนสุด? โดยเฉพาะอย่างยิ่งวิธีนี้เป็นสิ่งที่ตรงกันข้ามกับรูปแบบ "แนวคิด"? (และโปรดทราบว่าในสถาปัตยกรรม 6502 สแต็กจะเติบโตลงเช่นกันแม้ว่าจะถูก จำกัด ไว้ที่หน้า 256 ไบต์เดียวและการเลือกทิศทางนี้ดูเหมือนจะเป็นไปโดยพลการ)

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.