یک برنامهٔ C++ بنویسید که با استفاده از نوع size_t از هدر <cstddef> تابعی به نام safe_copy پیادهسازی کند که دو اشارهگر (مبدا و مقصد)، اندازهٔ بافر مقصد و تعداد بایتهایی که باید کپی شوند را گرفته، بهصورت ایمن کپی انجام دهد و در صورت اشارهگر NULL یا طول بیش از اندازهٔ مقصد، کد خطا (مثلاً -1) بازگرداند.
1.0 بازدید آخرین ویرایش در 221 روز قبل ساعت 01:16 0.0
در حل این مسئله هدر <cstddef> را برای استفاده از size_t وارد کنید و تمامی طولها را با size_t نگهدارید؛ پیش از کپی بررسی کنید که هیچیک از اشارهگرها nullptr نباشند و طول در محدودهٔ بافر مقصد باشد. در محیطهای سیستمی/امبدد معمولاً از استثناها استفاده نمیشود؛ بنابراین بهتر است با مقادیر بازگشتی (مثلاً 0 برای موفقیت و -1 برای خطا) وضعیت را گزارش کنید و خود کپی را با حلقهٔ ساده یا تابعی مانند memmove انجام دهید تا از همپوشانی نیز محافظت شود.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
برای ایمن بودن کپی با استفاده از size_t، هر دو اشارهگر و اندازهٔ بافر مقصد را قبل از کپی بررسی کنید و اگر یکی nullptr بود یا طول کپیشده بیش از ظرفیت مقصد بود، -1 بازگردانید. تمامی طولها را با نوع size_t نگه دارید و از <cstddef> استفاده کنید. برای حفظ همپوشانی بافرها از memmove استفاده کنید تا کپی در این شرایط درست انجام شود. در محیطهای بدون استثنا همواره مقدار 0 را برای موفقیت و -1 را برای خطا بازگردانید.
گزارش