คำถามติดแท็ก local-variables

20
หน่วยความจำของตัวแปรโลคัลสามารถเข้าถึงได้นอกขอบเขตหรือไม่?
ฉันมีรหัสต่อไปนี้ #include <iostream> int * foo() { int a = 5; return &a; } int main() { int* p = foo(); std::cout << *p; *p = 8; std::cout << *p; } และรหัสกำลังทำงานโดยไม่มีข้อยกเว้นรันไทม์! ผลลัพธ์ก็คือ 58 มันจะเป็นอย่างไร หน่วยความจำของตัวแปรโลคัลไม่สามารถเข้าถึงได้นอกฟังก์ชั่นหรือไม่

8
ขอบเขตของตัวแปรที่เริ่มต้นในคำสั่ง if คืออะไร
ฉันใหม่กับ Python ดังนั้นนี่อาจเป็นคำถามที่ง่าย รหัสต่อไปนี้ในไฟล์ Python (โมดูล) ทำให้ฉันสับสนเล็กน้อย: if __name__ == '__main__': x = 1 print x ในภาษาอื่น ๆ ที่ฉันเคยทำงานรหัสนี้จะทำให้เกิดข้อยกเว้นเนื่องจากxตัวแปรอยู่ในifคำสั่งและไม่ควรอยู่นอก แต่รหัสนี้ทำงานและพิมพ์ 1. ทุกคนสามารถอธิบายพฤติกรรมนี้ได้หรือไม่? ตัวแปรทั้งหมดถูกสร้างในโมดูลโกลบอล / มีให้สำหรับโมดูลทั้งหมดหรือไม่?

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

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