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

ฮีป (โครงสร้างข้อมูล) คือต้นไม้ที่เรียงลำดับตามความลึก ฮีปยังสามารถอ้างถึงหน่วยความจำกระบวนการที่ตั้งไว้สำหรับการจัดสรรแบบไดนามิก

14
วิธีแก้ไขข้อผิดพลาดฮีปเสียหาย
ฉันกำลังดีบักแอปพลิเคชัน C + + แบบหลายเธรดแบบเธรดภายใต้ Visual Studio 2008 ในโอกาสที่สุ่มฉันได้รับข้อผิดพลาด "Windows เรียกจุดพัก ... " ด้วยข้อผิดพลาดที่อาจเกิดจากการทุจริตใน กอง. ข้อผิดพลาดเหล่านี้จะไม่ทำให้แอปพลิเคชันหยุดทำงานทันทีแม้ว่าจะมีความผิดพลาดหลังจากนั้นก็ตาม ปัญหาใหญ่ของข้อผิดพลาดเหล่านี้คือเกิดขึ้นหลังจากความเสียหายเกิดขึ้นจริงซึ่งทำให้ยากต่อการติดตามและตรวจแก้จุดบกพร่องโดยเฉพาะอย่างยิ่งในแอปพลิเคชันแบบมัลติเธรด สิ่งใดที่ทำให้เกิดข้อผิดพลาดเหล่านี้ได้บ้าง ฉันจะดีบักได้อย่างไร ยินดีต้อนรับเคล็ดลับเครื่องมือวิธีการ enlightments ...
166 c++  windows  debugging  heap 

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

1
ความแตกต่างระหว่างการสุ่มตัวอย่างและการทำโปรไฟล์ใน jVisualVM
VisualVM มีสองแท็บแยกต่างหากสำหรับการสุ่มตัวอย่างและการทำโปรไฟล์ ความแตกต่างระหว่างการสุ่มตัวอย่างและการทำโปรไฟล์ใน VisualVM คืออะไร?
158 java  jvm  heap  jvisualvm 

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 


9
ตรวจสอบขนาดฮีปของแอปพลิเคชันใน Android
คุณจะตรวจสอบขนาดแอพพลิเคชั่นฮีปที่พร้อมใช้งานสำหรับแอพ Android โดยทางโปรแกรมได้อย่างไร ฉันได้ยินมาว่ามีฟังก์ชั่นที่ทำสิ่งนี้ใน SDK รุ่นที่ใหม่กว่า ไม่ว่าในกรณีใดฉันกำลังมองหาโซลูชันที่ใช้งานได้ตั้งแต่ 1.5 ขึ้นไป

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

30
“ zend_mm_heap เสียหาย” หมายถึงอะไร
ทันใดนั้นฉันก็ประสบปัญหากับแอปพลิเคชันที่ฉันไม่เคยมีมาก่อน ฉันตัดสินใจตรวจสอบบันทึกข้อผิดพลาดของ Apache และพบข้อความแสดงข้อผิดพลาดว่า "zend_mm_heap เสียหาย" สิ่งนี้หมายความว่า. ระบบปฏิบัติการ: Fedora Core 8 Apache: 2.2.9 PHP: 5.2.6

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

6
จะเพิ่มพื้นที่กองให้กับ Jenkins ได้อย่างไรเมื่อเริ่มเป็นบริการภายใต้ Windows
ฉันต้องการเพิ่มพื้นที่ฮีปที่มีให้สำหรับเจนกินส์ แต่เนื่องจากมีการติดตั้งเป็นบริการฉันไม่รู้ว่าจะต้องทำอย่างไร


8
Android Gradle ไม่สามารถสงวนพื้นที่เพียงพอสำหรับฮีปวัตถุ
ฉันได้ติดตั้ง Android Studio 1.1.0 แล้ว ฉันยังไม่ได้ทำอะไรเลยเช่นเริ่มแอปพลิเคชัน Android ใหม่หรือนำเข้าอะไรเลย มันพยายามสร้างบางอย่างและเกิดข้อผิดพลาดในการซิงค์ ข้อผิดพลาด: ไม่สามารถเริ่มกระบวนการ daemon ปัญหานี้อาจเกิดจากการกำหนดค่า daemon ไม่ถูกต้อง ตัวอย่างเช่นใช้อ็อพชัน jvm ที่ไม่รู้จัก โปรดดูบทแนะนำผู้ใช้เกี่ยวกับ daemon ที่http://gradle.org/docs/2.2.1/userguide/gradle_daemon.html โปรดอ่านผลลัพธ์ของกระบวนการต่อไปนี้เพื่อดูข้อมูลเพิ่มเติม: เกิดข้อผิดพลาดระหว่างการเตรียมใช้งาน VM ไม่สามารถสำรองพื้นที่เพียงพอสำหรับฮีปวัตถุไม่สามารถสร้างเครื่องเสมือน Java ฉันตรวจสอบแล้วgradle.org/.../gradle_daemon.htmlแต่ไม่พบสิ่งที่ช่วยฉันแก้ปัญหาได้ ไม่ใช่ปัญหาหน่วยความจำเพราะฉันมีหน่วยความจำกายภาพ 8GB และไม่มีโปรแกรมอื่นทำงานอยู่
92 android  gradle  jvm  heap 

5
อาร์เรย์ดั้งเดิมของ Java ถูกเก็บไว้ในสแต็กหรือฮีปหรือไม่?
ฉันมีการประกาศอาร์เรย์ดังนี้: int a[]; นี่aคืออาร์เรย์ของintประเภทดั้งเดิม อาร์เรย์นี้เก็บไว้ที่ไหน? เก็บไว้ในฮีปหรือสแต็ก? นี่คือประเภทไพรม์ไทม์ชนิดintดั้งเดิมทั้งหมดจะไม่ถูกเก็บไว้ในฮีป

7
การเปรียบเทียบตัวชี้ทำงานใน C อย่างไร การเปรียบเทียบพอยน์เตอร์ที่ไม่ได้ชี้ไปที่อาเรย์นั้นเป็นสิ่งที่ดีหรือไม่?
ใน K&R (ภาษาการเขียนโปรแกรม C รุ่นที่ 2) บทที่ 5 ฉันอ่านต่อไปนี้: ขั้นแรกให้เปรียบเทียบตัวชี้ภายใต้สถานการณ์บางอย่าง ถ้าpและqชี้ไปที่สมาชิกของอาร์เรย์เดียวกันแล้วความสัมพันธ์ที่ชอบ==, !=, <, >=ฯลฯ การทำงานอย่างถูกต้อง ซึ่งดูเหมือนว่าบ่งบอกว่ามีเพียงพอยน์เตอร์ที่ชี้ไปยังอาร์เรย์เดียวกันเท่านั้นที่สามารถเปรียบเทียบได้ อย่างไรก็ตามเมื่อฉันลองใช้รหัสนี้ char t = 't'; char *pt = &t; char x = 'x'; char *px = &x; printf("%d\n", pt > px); 1 ถูกพิมพ์ไปที่หน้าจอ ก่อนอื่นฉันคิดว่าฉันจะไม่ได้กำหนดหรือบางประเภทหรือข้อผิดพลาดเพราะptและpxไม่ได้ชี้ไปที่อาร์เรย์เดียวกัน (อย่างน้อยก็ในความเข้าใจของฉัน) เป็นpt > pxเพราะพอยน์เตอร์ทั้งสองชี้ไปที่ตัวแปรที่เก็บอยู่ในสแต็กและสแต็กโตขึ้นดังนั้นที่อยู่หน่วยความจำของtมากกว่าที่อยู่x? อะไรคือสาเหตุที่pt > pxแท้จริง ฉันสับสนมากขึ้นเมื่อนำ malloc เข้ามานอกจากนี้ใน …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.