<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[איפוס אובייקטים בקוד VBA]]></title><description><![CDATA[<p dir="auto">שלום וברכה<br />
אשמח לשמוע מהמבינים ( <a class="plugin-mentions-user plugin-mentions-a" href="/user/odeddvir">@<bdi>OdedDvir</bdi></a> ושאר החברים)<br />
מדוע חשוב לי לאפס אובייקטים בסיום הקוד<br />
אני רואה שבקודים מוסמכים תמיד מופיע בסיום הקוד איפוס האובייקטים שנפתחו על ידי Nothing<br />
אני מבין שהאיפוס הזה מפנה את המקום בזיכרון,<br />
אמנם בלאו הכי עם סיום הריצה הזיכרון משתחרר, אם כן, למה קריטי לעשות את זה במפורש<br />
האם כל הצורך הוא רק בשביל לפנות מקום תוך כדי הריצה עצמה, או שיש בזה עוד טעמים נסתרים?</p>
<p dir="auto">תודה מראש</p>
]]></description><link>https://tchumim.com/topic/11335/איפוס-אובייקטים-בקוד-vba</link><generator>RSS for Node</generator><lastBuildDate>Tue, 18 Aug 2026 23:46:16 GMT</lastBuildDate><atom:link href="https://tchumim.com/topic/11335.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 08 Jun 2021 12:43:15 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to איפוס אובייקטים בקוד VBA on Tue, 08 Jun 2021 13:03:58 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/%D7%9E%D7%95%D7%9E%D7%97%D7%94-%D7%91%D7%90%D7%A7%D7%A1%D7%A1">@<bdi>מומחה-באקסס</bdi></a> הפעולה האמורה היא לאו דווקא איפוס אובייקטים, אלא המונח הנכון יותר הוא: <strong>שחרור אובייקטים</strong>. כלומר הודעה למערכת שהאובייקט כבר אינו בשימוש ויש לשחרר את הזיכרון שהוקצה לו.</p>
<p dir="auto">יש שפות שבהן יש מנגנון מובנה שאמור לזהות אובייקטים שאינן בשימוש ולשחרר אותן אוטומטית. מנגנון זה נקרא בשם המכובד: <strong>"איסוף זבל"</strong> (Garbage Collection) ויש עליו חומר רב ברשת.</p>
<p dir="auto">על קצה המזלג, אפשר לחלק את המנגנון לשני חלקים:</p>
<ul>
<li>
<p dir="auto">בסגירת התוכנית - שפות רבות מבצעות איסוף זבל בסיום הריצה, ומשחררות את כל הזיכרון שהוקצה לתהליך. וכן מערכת ההפעלה בעצמה דואגת לבצע זאת.</p>
</li>
<li>
<p dir="auto">בזמן הריצה - כאן זה תלוי מאוד בשפה, יש שפות שמבצעות זאת אוטומטית (מבלי שתהיה לך איזו שליטה או ידיעה על כך כמעט) ויש שפות שמטילות עליך את האחריות המלאה לדאוג לכך.<br />
על פי רוב, בסיום מקטע Scope (בVBA כשתגיע למילה End) האובייקט <strong>אמור</strong> להתנדף.</p>
</li>
</ul>
<p dir="auto">ל-VBA קיים מנגנון איסוף זבל אוטומטי סביר בזמן ריצה, אך כמו כל דבר בעולם - הוא לא מושלם. ובתוכנות מורכבות מבחינת קוד, אתה עלול להגיע למצבים של זליגת זיכרון.<br />
למשל, אובייקט שהוגדר בתוך מקטע Scope לא ישוחרר מהזיכרון בסיום ה Scope אם קיים אליו איזה שהוא מצביע אחר.</p>
<p dir="auto">אולי בהמשך אדגים זאת על ידי קוד.</p>
]]></description><link>https://tchumim.com/post/123824</link><guid isPermaLink="true">https://tchumim.com/post/123824</guid><dc:creator><![CDATA[OdedDvir]]></dc:creator><pubDate>Tue, 08 Jun 2021 13:03:58 GMT</pubDate></item><item><title><![CDATA[Reply to איפוס אובייקטים בקוד VBA on Tue, 08 Jun 2021 13:00:29 GMT]]></title><description><![CDATA[<p dir="auto"><a href="https://stackoverflow.com/q/19038350/1271037" target="_blank" rel="noopener noreferrer nofollow ugc">When should an Excel VBA variable be killed or set to Nothing?</a></p>
]]></description><link>https://tchumim.com/post/123823</link><guid isPermaLink="true">https://tchumim.com/post/123823</guid><dc:creator><![CDATA[dovid]]></dc:creator><pubDate>Tue, 08 Jun 2021 13:00:29 GMT</pubDate></item></channel></rss>