القسمة الآمنة في لغة C باستخدام Maybe

2025-08-11

تتناول هذه المقالة تنفيذ حاويات عامة آمنة من حيث النوع والحدود في لغة C. يقدم الكاتب نوعًا يُدعى Maybe مستوحى من Haskell، للتعامل مع الدوال التي قد تُرجع قيمة غير موجودة (مثل القسمة على صفر). تم إنشاء دالة قسمة آمنة باستخدام وحدات ماكرو لتحديد Maybe، مع معالجة القسمة على صفر وحالة الحد من قسمة أصغر عدد صحيح قابل للتعبير عنه على -1. تم تحليل رمز التجميع الذي تم إنشاؤه بواسطة GCC للتحقق من أمان الدالة. ويختتم الكاتب بملاحظة حدود هذا النهج في إثبات الأمان الكامل لبرامج C.

اقرأ المزيد

حاويات عامة في لغة C: تنفيذ آمن وفعال لـ vec

2025-07-26

تتناول هذه المقالة تفاصيل تنفيذ حاوية عامة آمنة من حيث النوع والحدود، وهي `vec`، بلغة C. `vec` هي في الأساس مصفوفة قابلة لإعادة التشكيل، تتزايد ديناميكيًا باستخدام `realloc`. يشرح الكاتب التنفيذ، بما في ذلك دالة `vec_push` ومعالجة أخطاء تخصيص الذاكرة. كما يتم استكشاف واجهتين محسنتين، هما `vec_push_cap` و `vec_push_auto`، لتحسين الأداء. وتتم مناقشة أمن الحدود، بالإضافة إلى التشغيل البيني مع المصفوفات التقليدية في لغة C من خلال ماكرو `vec2array`.

اقرأ المزيد