मुझे लगता है कि चारों ओर सी # कोड के कम से कम, neatest टुकड़ा मज़बूती से एक segfault का उत्पादन करेगा में दिलचस्पी है।क्या है? सीधे किसी भी अप्रबंधित कोड बुला बिना आदर्श -
उत्तर
आप के बाद क्या कर रहे हैं कुछ हद तक स्पष्ट नहीं है, लेकिन मुझे लगता है कि यह अब तक किसी भी जवाब के रूप में के रूप में अच्छा है, और इसके बारे में के रूप में कम से कम के रूप में आप प्राप्त कर सकते है।
System.Runtime.InteropServices.Marshal.ReadInt32(IntPtr.Zero);
हां, धन्यवाद। यही वह था जो मैं बाद में था। – Tom
/unsafe
विकल्प के साथ csc
साथ संकलित:
class Program
{
static void Main(string[] args)
{
unsafe
{
int *p = null;
*p = 5;
}
}
}
कि वास्तव में एक NullReferenceException है, जो आसान सादे पुराने नेट के साथ पाने के लिए पर्याप्त है फेंकता है। मुझे लगता है कि ओपी एक AccessViolationException की तरह कुछ और के बाद है। –
कवर के तहत एक पहुँच उल्लंघन (देशी अपवाद कोड 0xc0000005) NULL संकेतक भिन्नता जो तब 'System.NullReferenceException' का एक उदाहरण में CLR में फंस और अनुवाद किया है से परिणाम। –
ऊपर टिप्पणी में बताया गया है, वहाँ Windows में एक segfault जैसी कोई चीज नहीं है, और आप लिनक्स पर मोनो के बारे में कुछ नहीं कहा। तो मैं मानता हूं कि आप वास्तव में एक प्रवेश उल्लंघन का मतलब है।
यहाँ एक तरह से प्राप्त करने के लिए है एक:
unsafe {
int* a = (int*) -4;
*a = 0;
}
(/unsafe
विकल्प के साथ संकलित किया जाना चाहिए।)
मेरे पहली कोशिश पते के रूप में इस्तेमाल किया 0, लेकिन यह एक सादे पुराने फेंकने के लिए निकला NullReferenceException, जिसे आप असुरक्षित कोड के बिना प्राप्त कर सकते हैं। लेकिन नकारात्मक पते को मेरे Vista x64 बॉक्स पर AccessViolationException मिलता है।
दिलचस्प बात यह है कि लिनक्स के तहत चल रहे मोनो 1.9.1 पर 'NullReferenceException' में परिणाम होता है, इसलिए मुझे लगता है कि यह आर्किटेक्चर-निर्भर है (या मोनो इसे गलत समझता है!)। –
धन्यवाद। जहां तक शब्दावली का सवाल है, मैं एक "प्रवेश उल्लंघन" को एक सेगफॉल्ट कहने से खुश हूं - हमेशा रहा है। – Tom
माइकल के जवाब मेरे लिए काम नहीं कर रहा था, शायद उस मामले अब पकड़ा है। मार्शल.रेडइन्ट 32() बस मुझे "सिस्टम एरर: सुरक्षित स्मृति पढ़ने या लिखने का प्रयास करता है।" विभिन्न पास मूल्यों के लिए विंडोज़ पर .NET 4.5 के साथ। मैं तथापि निम्नलिखित इस्तेमाल किया जो विंडोज पर और मोनो 4.0.4.1 के तहत मुझे दोनों के लिए segfaults:
using System.Runtime.InteropServices;
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
public delegate void UNMANAGED_CALLBACK();
public void Crash()
{
var crash = (UNMANAGED_CALLBACK)Marshal.GetDelegateForFunctionPointer((IntPtr) 123, typeof(UNMANAGED_CALLBACK));
crash();
}
- 1. अप्रबंधित कोड
- 2. अप्रबंधित कोड
- 3. अप्रबंधित कोड
- 4. सी # अप्रत्याशित कोड बिना अप्रबंधित अनुमति
- 5. अप्रबंधित कोड
- 6. अप्रबंधित कोड
- 7. अप्रबंधित सी ++ कोड
- 8. अप्रबंधित सी ++ कोड
- 9. () सुनने बाँध बुला बिना()
- 10. क्या मूल जावा आदर्श है?
- 11. पास बहु - अप्रबंधित कोड
- 12. .NET से अप्रबंधित सी ++ कोड
- 13. ब्राउज़र में किसी भी पेज पर सीधे jQuery कैसे चलाएं?
- 14. एल्गोरिदम किसी भी मार्कअप के बिना पाठ
- 15. क्या किसी भी संगठन को परिभाषित किए बिना किसी इकाई में किसी फ़ील्ड को मैप करना संभव है?
- 16. आप विस्तार विधियों को सीधे क्यों नहीं बुला सकते हैं?
- 17. निगरानी प्रिंट स्पूल इंटरॉप/अप्रबंधित कोड
- 18. मेरा आवेदन अप्रबंधित है। मैं प्रबंधित कोड कहां शुरू करूं?
- 19. सहेजें rails3 में कॉलबैक बुला बिना active_record
- 20. किसी तालिका में किसी भी इंडेक्स के बिना प्राथमिक कुंजी?
- 21. अप्रबंधित
- 22. भागो कोड किसी भी Django प्रबंधन कमांड
- 23. क्या कोई भी किसी भी बुनियादी stm32 ट्यूटोरियल जानता है?
- 24. प्रबंधित कोड डीबग करते समय अप्रबंधित कोड डिबगिंग
- 25. सी # में असुरक्षित कोड और अप्रबंधित कोड के बीच क्या अंतर है?
- 26. क्या कोई आईडीई है जिसमें केकेपीएचपी या किसी भी कोड-संकेत पैकेज के लिए कोड-संकेत है जिसे किसी भी तरह से स्थापित किया जा सकता है?
- 27. सी ++/क्ली पास (प्रबंधित) अप्रबंधित कोड
- 28. किसी भी SQL तालिका
- 29. किसी स्ट्रीम से सीधे संपीड़न
- 30. अप्रबंधित कोड से प्रबंधित कोड का उपयोग कैसे करें?
संभावना नहीं होने के लिए। प्रबंधित कोड में सेगफॉल्ट का मतलब जेआईटी/रनटाइम में एक बग और कुछ स्थितियों में एक भेद्यता होगी। यदि यह संभव है, तो इसे जल्द ही तय किया जा रहा है-आश। – viraptor
यह करने के लिए एक पूरा compilable जवाब केवल एक दर्जन से अधिक लाइनों के बारे में होना चाहिए। –
@viraptor: नहीं, क्रम विभाजन गलती (Windows पर शब्द "पहुँच उल्लंघन" है) को संभालने और एक NullPointerException फेंक सकता है, लेकिन है कि कभी नहीं एक विभाजन गलती होने के रूप में एक ही नहीं है। 'System.Runtime: आप सभी की जरूरत से संदिग्ध कोड (सी # में, इसका मतलब है कि'/संकलन unsafe') –