"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > لماذا يتسبب `malloc()` في حدوث خطأ \"تحويل غير صالح\" في C++؟

لماذا يتسبب `malloc()` في حدوث خطأ \"تحويل غير صالح\" في C++؟

تم النشر بتاريخ 2024-11-08
تصفح:718

 Why Does `malloc()` Cause an \

مشكلة تخصيص Malloc: فهم خطأ "التحويل غير الصالح"

يقدم الكود المقدم مشكلة شائعة عند محاولة تخصيص الذاكرة باستخدام malloc( ). ينبع الخطأ من تعيين قيمة الإرجاع الخاصة بـ malloc() مباشرة إلى مؤشر char بدون التحويل المناسب.

تحجز وظيفة malloc () كتلة من الذاكرة في الكومة وترجع مؤشر فارغ عام. ومع ذلك، تقوم التعليمات البرمجية بتعيين هذا المؤشر إلى مؤشر char دون تحويل نوع صريح. يؤدي عدم التطابق هذا إلى حدوث خطأ في الترجمة "تحويل غير صالح من void إلى char`."

حل خطأ التحويل

لحل هذه المشكلة، عليك يجب أن يلقي بشكل صريح القيمة المرجعة لـ malloc() إلى النوع المطلوب. في هذه الحالة، تحتاج إلى الإرسال إلى مؤشر char. يجب أن يبدو الإعلان الصحيح كما يلي:

char *foo = (char*)malloc(1);

تعمل عملية الصب هذه بشكل صريح على تحويل مؤشر الفراغ العام الذي تم إرجاعه بواسطة malloc() إلى مؤشر char.

تحذير G

تشير رسالة الخطأ إلى استخدام g مع CodeBlocks وتثير مسألة ما إذا كان تجميع الملف كملف .cpp مهمًا. الجواب هو نعم. يتم تجميع التعليمات البرمجية باستخدام g افتراضيًا وفقًا لمعيار C، الأمر الذي يتطلب عملية الصب الموضحة أعلاه. وهذا يضمن أن المترجم يتعامل بدقة مع تحويلات النوع ويمنع المشكلات المحتملة أو السلوك غير المحدد.

أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3