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

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

27
กองและกองคืออะไรและอยู่ที่ไหน
หนังสือภาษาการเขียนโปรแกรมอธิบายว่าชนิดของค่าถูกสร้างขึ้นบนสแต็กและประเภทการอ้างอิงจะถูกสร้างขึ้นบนฮีปโดยไม่ต้องอธิบายว่าสองสิ่งนี้คืออะไร ฉันไม่ได้อ่านคำอธิบายที่ชัดเจนเกี่ยวกับเรื่องนี้ ฉันเข้าใจว่าสแต็คคืออะไร แต่, พวกเขาอยู่ที่ไหนและอะไร (ทางกายภาพในหน่วยความจำของคอมพิวเตอร์จริง)? มีการควบคุมโดยระบบปฏิบัติการหรือภาษาที่ใช้งานในระดับเท่าใด ขอบเขตของพวกเขาคืออะไร? อะไรเป็นตัวกำหนดขนาดของแต่ละคน อะไรทำให้เร็วขึ้น

24
คุณจะใช้งาน Stack และ Queue ใน JavaScript ได้อย่างไร
วิธีที่ดีที่สุดในการนำ Stack และ Queue ไปใช้ใน JavaScript คืออะไร? ฉันกำลังมองหาอัลกอริธึมการหลบหลีกและฉันต้องการโครงสร้างข้อมูลเหล่านี้

5
ทำไมคลาส Java Vector (และ Stack) จึงถือว่าล้าสมัยหรือเลิกใช้แล้ว
เหตุใด Java Vector จึงถือเป็นคลาสดั้งเดิมล้าสมัยหรือเลิกใช้แล้ว การใช้งานไม่ถูกต้องเมื่อทำงานกับการทำงานพร้อมกันหรือไม่ และถ้าฉันไม่ต้องการซิงโครไนซ์วัตถุด้วยตนเองและเพียงแค่ต้องการใช้คอลเลกชันเธรดที่ปลอดภัยโดยไม่จำเป็นต้องทำสำเนาใหม่ของอาเรย์ต้นแบบ (เช่นเดียวกับCopyOnWriteArrayList) มันจะใช้ได้Vectorไหม? สิ่งที่เกี่ยวกับStackประเภทย่อยของVectorสิ่งที่ฉันควรใช้แทนมันได้หรือไม่

23
ซึ่งเร็วกว่า: การจัดสรรสแต็กหรือการจัดสรรฮีป
คำถามนี้อาจฟังดูค่อนข้างธรรมดา แต่เป็นการอภิปรายที่ฉันมีกับผู้พัฒนารายอื่นที่ฉันทำงานด้วย ฉันกำลังดูแลการจัดสรรสิ่งต่าง ๆ ที่ฉันสามารถทำได้แทนที่จะกองพวกเขา เขากำลังพูดกับฉันและเฝ้าไหล่ของฉันและแสดงความคิดเห็นว่ามันไม่จำเป็นเพราะมันเป็นการแสดงที่ฉลาดเหมือนกัน ฉันอยู่ภายใต้การแสดงผลเสมอว่าการเติบโตของสแต็กนั้นเป็นเวลาที่คงที่และประสิทธิภาพของการจัดสรรฮีปขึ้นอยู่กับความซับซ้อนในปัจจุบันของฮีปสำหรับการจัดสรรทั้งสอง (การหารูขนาดที่เหมาะสม) และการจัดสรร (ยุบหลุมเพื่อลดการกระจายตัว การใช้งานไลบรารีมาตรฐานจำนวนมากต้องใช้เวลาในการทำสิ่งนี้ในระหว่างการลบหากฉันไม่ผิดพลาด) สิ่งนี้ทำให้ฉันเป็นสิ่งที่อาจต้องพึ่งพาผู้แปล สำหรับโครงการนี้โดยเฉพาะฉันใช้คอมไพเลอร์MetrowerksสำหรับสถาปัตยกรรมPPC ข้อมูลเชิงลึกเกี่ยวกับชุดค่าผสมนี้จะมีประโยชน์มากที่สุด แต่โดยทั่วไปสำหรับ GCC และ MSVC ++ กรณีนี้คืออะไร การจัดสรรฮีปไม่สูงเท่ากับประสิทธิภาพการจัดสรรสแต็กหรือไม่ ไม่มีความแตกต่าง? หรือความแตกต่างดังนั้นนาทีมันกลายเป็นไมโครเพิ่มประสิทธิภาพไม่มีจุดหมาย
503 c++  performance  memory  stack  heap 

25
ทำไมการใช้ alloca () จึงไม่ถือว่าเป็นแนวปฏิบัติที่ดี?
alloca()malloc()หน่วยความจำที่จัดสรรในกองมากกว่าในกองเช่นในกรณีของ ดังนั้นเมื่อฉันกลับจากรูทีนหน่วยความจำจะถูกปล่อยให้เป็นอิสระ ดังนั้นที่จริงแล้วสิ่งนี้แก้ปัญหาของฉันในการเพิ่มหน่วยความจำที่จัดสรรแบบไดนามิก การเพิ่มจำนวนของหน่วยความจำที่จัดสรรผ่านmalloc()นั้นเป็นเรื่องที่น่าปวดหัวอย่างมากและหากพลาดไปก็จะทำให้เกิดปัญหาหน่วยความจำทุกประเภท ทำไมการใช้งานalloca()ท้อแท้ทั้งๆที่มีคุณสมบัติข้างต้น?
400 c  stack  malloc  allocation  alloca 


30
Android: ล้างสแต็คด้านหลัง
ใน Android ฉันมีกิจกรรมบางอย่างสมมติว่า A, B, C ใน A ฉันใช้รหัสนี้เพื่อเปิด B: Intent intent = new Intent(this, B.class); startActivity(intent); ใน B ฉันใช้รหัสนี้เพื่อเปิด C: Intent intent = new Intent(this, C.class); startActivity(intent); เมื่อผู้ใช้แตะปุ่มใน C ฉันต้องการกลับไปที่ A และล้าง back stack (ปิดทั้ง B และ C) ดังนั้นเมื่อผู้ใช้ใช้ปุ่มย้อนกลับ B และ C จะไม่ปรากฏขึ้นฉันได้ลองทำสิ่งต่อไปนี้: Intent intent = new Intent(this, A.class); …

9
ตรวจพบสแตกยอดเยี่ยม
ฉันกำลังเรียกใช้ไฟล์ a.out ของฉัน หลังจากการดำเนินการโปรแกรมจะทำงานเป็นระยะเวลาหนึ่งแล้วออกจากพร้อมข้อความ: **** stack smashing detected ***: ./a.out terminated* *======= Backtrace: =========* */lib/tls/i686/cmov/libc.so.6(__fortify_fail+0x48)Aborted* อะไรคือสาเหตุที่เป็นไปได้สำหรับสิ่งนี้และฉันจะแก้ไขได้อย่างไร
246 c  exception  stack 

6
Python ปรับหางแบบวนซ้ำให้เหมาะสมหรือไม่?
ฉันมีรหัสต่อไปนี้ซึ่งล้มเหลวด้วยข้อผิดพลาดต่อไปนี้: RuntimeError: เกินความลึกการเรียกซ้ำสูงสุด ฉันพยายามเขียนสิ่งนี้เพื่ออนุญาตการปรับให้เหมาะสมแบบเรียกซ้ำหาง (TCO) ฉันเชื่อว่ารหัสนี้ควรจะประสบความสำเร็จหาก TCO เกิดขึ้น def trisum(n, csum): if n == 0: return csum else: return trisum(n - 1, csum + n) print(trisum(1000, 0)) ฉันควรสรุปได้หรือไม่ว่า Python ไม่ได้ทำ TCO ประเภทใดหรือฉันต้องกำหนดมันให้แตกต่างกันหรือไม่?


13
Java ArrayList วิธีการเพิ่มองค์ประกอบที่จุดเริ่มต้น
ฉันต้องการเพิ่มองค์ประกอบลงในArrayListคิว แต่เมื่อฉันเรียกใช้ฟังก์ชันเพื่อเพิ่มองค์ประกอบฉันต้องการให้เพิ่มองค์ประกอบที่จุดเริ่มต้นของอาร์เรย์ (ดังนั้นจึงมีดัชนีต่ำสุด) และถ้าอาร์เรย์มีองค์ประกอบเพิ่ม 10 รายการ ผลลัพธ์ใหม่ในการลบองค์ประกอบที่เก่าที่สุด (อันที่มีดัชนีสูงสุด) ไม่มีใครมีข้อเสนอแนะใด ๆ ?
183 java  arrays  arraylist  stack 

9
Stack, Static และ Heap ใน C ++
ฉันค้นหาแล้ว แต่ฉันไม่เข้าใจแนวคิดทั้งสามนี้เป็นอย่างดี ฉันต้องใช้การจัดสรรแบบไดนามิกเมื่อใด (ในฮีป) และประโยชน์ที่แท้จริงของมันคืออะไร ปัญหาของการเกิดไฟฟ้าสถิตย์และกองซ้อนคืออะไร? ฉันสามารถเขียนแอปพลิเคชันทั้งหมดโดยไม่จัดสรรตัวแปรในฮีปได้ไหม ฉันได้ยินมาว่าภาษาอื่น ๆ รวม "ผู้รวบรวมขยะ" ดังนั้นคุณไม่ต้องกังวลเกี่ยวกับความทรงจำ ที่เก็บขยะทำอะไร? คุณสามารถจัดการกับหน่วยความจำด้วยตัวเองได้อย่างไรโดยที่คุณไม่สามารถใช้ตัวเก็บขยะนี้ได้ เมื่อมีคนพูดกับฉันว่าด้วยการประกาศนี้: int * asafe=new int; ฉันมี "ตัวชี้ไปยังตัวชี้" มันหมายความว่าอะไร? มันแตกต่างจาก: asafe=new int; ?

9
ใน C เครื่องหมายวงเล็บทำหน้าที่เป็นกรอบสแต็กหรือไม่
หากฉันสร้างตัวแปรภายในวงเล็บปีกกาชุดใหม่ตัวแปรนั้นจะแตกออกจากสแต็กในวงเล็บปิดหรือไม่หรือจะออกไปเที่ยวจนจบฟังก์ชัน ตัวอย่างเช่น: void foo() { int c[100]; { int d[200]; } //code that takes a while return; } จะdใช้หน่วยความจำระหว่างcode that takes a whileส่วนหรือไม่
153 c  memory  stack 

5
เมื่อมีการจัดสรรเวกเตอร์พวกเขาจะใช้หน่วยความจำบนกองหรือกอง?
ข้อความต่อไปนี้ทั้งหมดเป็นจริงหรือไม่? vector<Type> vect; //allocates vect on stack and each of the Type (using std::allocator) also will be on the stack vector<Type> *vect = new vector<Type>; //allocates vect on heap and each of the Type will be allocated on stack vector<Type*> vect; //vect will be on stack and Type* will be …
151 c++  stl  vector  stack  heap 

22
ใช้กองซ้อนโดยใช้สองคิว
คำถามที่คล้ายกันก็ถามว่าก่อนหน้านี้มีแต่คำถามที่นี่เป็นสิ่งที่ตรงกันข้ามของมันใช้สองคิวเป็นกอง คำถาม... ได้รับสองคิวกับการดำเนินงานมาตรฐาน ( enqueue, dequeue, isempty, size) ใช้กองกับการดำเนินงานมาตรฐาน ( pop, push, isempty, size) ควรมีโซลูชันสองรุ่น เวอร์ชันA : สแต็กควรมีประสิทธิภาพเมื่อกดไอเท็ม และ เวอร์ชันB : สแต็กควรมีประสิทธิภาพเมื่อเปิดไอเท็ม ฉันสนใจอัลกอริทึมมากกว่าการใช้ภาษาเฉพาะใด ๆ อย่างไรก็ตามฉันยินดีต้อนรับวิธีแก้ปัญหาที่แสดงเป็นภาษาที่ฉันคุ้นเคย (ชวา,ค#,หลาม,VB,จาวาสคริปต์,PHP)

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