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

5
การใช้คีย์เวิร์ด "stackalloc" ในทางปฏิบัติ
มีใครเคยใช้จริงstackallocขณะเขียนโปรแกรม C # บ้าง? ฉันรู้ว่าอะไรคืออะไร แต่ครั้งเดียวที่มันปรากฏในรหัสของฉันคือโดยบังเอิญเพราะ Intellisense แนะนำเมื่อฉันเริ่มพิมพ์staticเช่น แม้ว่ามันจะไม่เกี่ยวข้องกับสถานการณ์การใช้งานstackallocแต่จริงๆแล้วฉันก็ใช้การทำงานร่วมกันแบบดั้งเดิมจำนวนมากในแอพของฉันดังนั้นฉันจึงสามารถใช้unsafeรหัสได้ในทุกๆครั้ง แต่อย่างไรก็ตามฉันมักจะหาวิธีหลีกเลี่ยงunsafeอย่างสิ้นเชิง และเนื่องจากขนาดสแต็กสำหรับเธรดเดียวใน. Net คือ ~ 1Mb (แก้ไขฉันถ้าฉันผิด) ฉันจึงถูกสงวนไว้จากการใช้stackalloc. มีบางกรณีที่สามารถพูดได้ว่า: "นี่คือปริมาณข้อมูลและการประมวลผลที่เหมาะสมสำหรับฉันที่จะไม่ปลอดภัยและใช้งานstackalloc"?
139 c#  keyword  stackalloc 

1
รหัสที่ไม่ปลอดภัยนี้ควรทำงานใน. NET Core 3 ด้วยหรือไม่
ฉันปรับโครงสร้างห้องสมุดของฉันเพื่อใช้Span<T>ในการหลีกเลี่ยงการจัดสรรฮีปหากเป็นไปได้ แต่ตามที่ฉันกำหนดเป้าหมายด้วยเฟรมเวิร์กที่เก่ากว่าฉันกำลังใช้โซลูชันทางเลือกทั่วไปด้วย แต่ตอนนี้ฉันพบปัญหาแปลก ๆ และฉันค่อนข้างแน่ใจว่าฉันพบข้อผิดพลาดใน. NET Core 3 หรือฉันกำลังทำสิ่งผิดกฎหมาย ปัญหา: // This returns 1 as expected but cannot be used in older frameworks: private static uint ReinterpretNew() { Span<byte> bytes = stackalloc byte[4]; bytes[0] = 1; // FillBytes(bytes); // returning bytes as uint: return Unsafe.As<byte, uint>(ref bytes.GetPinnableReference()); } // This …
42 c#  stackalloc 
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.