یک برنامهٔ C++ بنویسید که با استفاده از نوع size_t از هدر <cstddef> تابعی به نام safe_copy پیاده‌سازی کند که دو اشاره‌گر (مبدا و مقصد)، اندازهٔ بافر مقصد و تعداد بایت‌هایی که باید کپی شوند را گرفته، به‌صورت ایمن کپی انجام دهد و در صورت اشاره‌گر NULL یا طول بیش از اندازهٔ مقصد، کد خطا (مثلاً -1) بازگرداند.

1.0 بازدید آخرین ویرایش در 221 روز قبل ساعت 01:16

0.0

در حل این مسئله هدر <cstddef> را برای استفاده از size_t وارد کنید و تمامی طول‌ها را با size_t نگهدارید؛ پیش از کپی بررسی کنید که هیچ‌یک از اشاره‌گرها nullptr نباشند و طول در محدودهٔ بافر مقصد باشد. در محیط‌های سیستمی/امبدد معمولاً از استثناها استفاده نمی‌شود؛ بنابراین بهتر است با مقادیر بازگشتی (مثلاً 0 برای موفقیت و -1 برای خطا) وضعیت را گزارش کنید و خود کپی را با حلقهٔ ساده یا تابعی مانند memmove انجام دهید تا از همپوشانی نیز محافظت شود.

توسط پژوهشگر در 221 روز قبل ساعت 01:16
دسته بندی ها: C Plus Plus C Plus Plus for beginner
arash در 221 روز قبل ساعت 13:53

برای ایمن بودن کپی با استفاده از size_t، هر دو اشاره‌گر و اندازهٔ بافر مقصد را قبل از کپی بررسی کنید و اگر یکی nullptr بود یا طول کپی‌شده بیش از ظرفیت مقصد بود، -1 بازگردانید. تمامی طول‌ها را با نوع size_t نگه دارید و از <cstddef> استفاده کنید. برای حفظ هم‌پوشانی بافرها از memmove استفاده کنید تا کپی در این شرایط درست انجام شود. در محیط‌های بدون استثنا همواره مقدار 0 را برای موفقیت و -1 را برای خطا بازگردانید.

گزارش

1 پاسخ

جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من

در حال بارگیری...
ورود به حساب کاربری