SajjadKhati
کاربر فعال <A href="http://forum.majidonline.com/f
خیلی ممنون استاد .اینکه حافظه جدیدی تخصیص داده بشه یا نشه به نحوه پیاده سازی زبان و بخش عملگر انتساب ( = ) مربوطه، ربطی به new که یک کلمه کلیدی زبان ئه نداره.
توضیحات عملگر new رو بخونید، ببینید داخلش صحبتی در مورد حافظه جدید شده یا نه. اگر نشده پس ربطی به حافظه جدید نداره.
فرض کنید که i = 4 + 5 رو دارید، 5 در یک حافظه مجزا است، 4 در یک حافظه مجزا، 4 + 5 در یک حافظه دیگه محاسبه میشه و عملگر = این مقدار رو در حافظه i کپی می کنه. حالا اینکه در سمت راست = ئه new ای بوده یا نبوده و چه تعدادی حافظه مجزا بوده که ربطی به عملکرد عملگر انتساب و کاری که با مقدار i و حافظه اش می کنه نداره.![]()
راستی استاد ، قبلا که میگفتید که آدرس حافظه ، جابجا میشه ، این کار GC در دات نت بود دیگه . درسته؟
یا کار سیستم عامل بود؟
اما از دید پروسه ، این تغییر آدرس ، پنهان میموند و پروسه ، یه آدرس نسبی ، نسبت به page هایی که براش در نظر گرفته شده بود را داره و بنابراین این تغییر آدرس را متوجه نمیشه . درسته؟
و اینکه استاد ، در .net core ، الان خیلی از کتابخونه هایی که در دات نت فریم وورک هست ، در اونجا هم هست . مثلا ComboBox ئه wpf ، در دات نت کور 3 هم هست . این به این معنا هست که در سیستم عامل های دیگه (مثل اندروید یا مکینتاش) هم میتونیم از این کتابخونه های دات نت کور (مثل همین کمبوباکس) استفاده کنیم؟
یا اینکه مثل قضیه ی استفاده از کتابخونه های رجیستری در دات نت کور هست که قبلا درباره ی دات نت کور گفتید (که چون رجیستری ، فقط در ویندوز وجود داره ، پس با استفاده از این کتابخونه ، اون برنامه ای که از دات نت کور استفاده میکنه ، دیگه با سیستم عامل های دیگه ، سازگار نیست) .
این توابع و هدرهایی که نام میبره ، مربوط به هسته ی سیستم عامل ویندوز هستن . درسته؟ :Kernel32.dll توابع هسته سیستم عامل نیست، شامل یکسری توابع اساسی است که برنامه های سطح کاربری ویندوز ازش استفاده می کنند.
و در کل برنامه ای در سطح کاربر نمی تونه از هسته سیستم عامل سرویسی بگیره که نیاز به دسترسی سطح هسته داره.
آها . یعنی یه برنامه یا یه شخصی با دسترسی admin هم میتونه کاری کنه که این دسترسِ برنامه مون به درایوری که کتابخونه یا سرویس اش که توسط برنامه نویس ++C انجام شد و ما در برنامه ی سی شارپ مون در سطح دسترسی admin ، بهش دسترسی داریم را منع کنه؟سرویس هایی که شما بخواهید در سطح کاربری دریافت کنید به همون شکل هم نقض شدنی هستند :
![]()
7 Tools to Unlock Those Hard to Delete Files • Raymond.CC
Files become locked because they are still being used by a Windows process or service and cannot be touched until Windows releases the file. Here’s a selection of 7 different file unlock and delete tools for you to remove your difficult to get rid of files and folders.www.raymond.cc
البته باز هم این اش برای بعضی از برنامه هام ، شاید مهم نباشه .
اینکه سی شارپ چرا این توانایی را نداره؟منطق استدلال تون رو متوجه نشدم ولی در چه موضوعی تردید دارید؟ در اینکه ++C برای نوشتن نرم افزار سطح هسته و ارتباط سطح پایین با سخت افزار قابل استفاده است؟ یا اینکه #C این توانایی ها رو نداره؟ اگر از زبان ++C شناخت کافی نداشته باشید که جایی برای بحث و گفتگو نیست.
بله.
خیر.
از نظر فنی #C نمیتونه همچین کاری رو انجام بده. می توانید واسط کاربری برنامه رو با #C طراحی کنید اما بدون استفاده از یک سرویس سیستمی که خودش به زبان #C قابل پیاده سازی نیست کار نخواهد کرد.
غیر از اینه که برنامه نویس های ++C ، وقتی میخوان درایور بسازن ، از هِدِر ها و فایل ها و کتابخونه هایی که هسته ی سیستم عامل ویندوز (در اون لینک بالا) که در اختیارشون میذاره استفاده و فراخونی میکنن و در واقع متدهای پایه را خودشون از اول نمینویسن؟
اگه آره ، خوب سی شارپ هم قابلییت فراخونی خیلی از متدها و کلا اعضایی که ++C قابلیت فراخونی شونو داره ، داره دیگه .
پس چرا با سی شارپ نمیشه برنامه ی سطح درایور ساخت؟
یا اینکه میشه اما قابلیت های سی شارپ (مثلا بخاطر اینکه توانایی این رو نداره که بعضی از اعضایی که ++C میتونه فراخونی شون کنه ، اون سی شارپ نمیتونه) ، در ساخت درایور ، کمتره؟
همچنین تشکر از بقیه ی جواب هاتون
