עבור לתוכן
View in the app

A better way to browse. Learn more.

HWzone

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

האם זה נמצא ב HEAP או ב STACK

Featured Replies

פורסם

שפה - c#


object bb = new object();
bb = 1;

Console.WriteLine(bb.GetType());
Console.WriteLine(bb.GetType().IsByRef);
Console.WriteLine(bb.GetType().IsValueType);

output:
system.int32
false
true

השאלה האם bb נמצא ב STACK או HEAP

אחיי אומר שזה נמצא ב HEAP

אבל GETTYPE נותן משהו אחר ?

נערך על-ידי aviv00

פורסם

אם אתה משתמש ב-NEW זה יהיה על ה-HEAP. מה זה קשור בכלל ל-gettype?

פורסם
  • מחבר
אם אתה משתמש ב-NEW זה יהיה על ה-HEAP. מה זה קשור בכלל ל-gettype?

object bb ();

bb = 1;

ז"א ככה זה ב STACK ?

לא קשור רק בשביל מעקב

יש פקודה שנותנת מענה איפה המשתנה נמצא ?

נערך על-ידי aviv00

פורסם

תקן בבקשה את הקוד שלך (שים אותו בצורה מסודרת בתג קוד).

חוץ מזה, ציין בכותרת באיזו שפה את כותב.

נערך על-ידי שניצל

פורסם
  • מחבר
תקן בבקשה את הקוד שלך (שים אותו בצורה מסודרת בתג קוד).

חוץ מזה, ציין בכותרת באיזו שפה את כותב.

הוספתי את שפת תכנות

אגב עשיתי

bb = 1L

וזה שינה אותו ל LONG אז זה בטח ב HEAP אם זה משתנה למרות שלא השתמשתי ב new

נערך על-ידי aviv00

פורסם

למה ש-long יהיה ב-heap? הוא פרימיטיבי ולכן הוא גם value type.

פורסם
  • מחבר

STACK אי אפשר לשנות בריצה

HEAP אפשר

לכן אם אתה מבצע שינוי TYPE אז הוא חייב להיות ב HEAP זה מה שאני חושב

אם תעשה

int i

i = 1L

תקבל שגיאה כי אי אפשר לשנות את ה TYPE אחרי שהגדרת אותו ב STACK

ב HEAP אפשר.... ? או שאני טועה

פורסם

אה.....

מה?

אין שום הגיון במה שכתבת.

הסיבה שאפשר לעשות דבר כזה:

Object x = new Object();
x = 1L;

היא כי x הוא מטיפוס Object שיכול להצביע לכל דבר, כולל int ו-long. אין פה שום קשר ל-stack/heap.

אם תנסה לשים ערך long בתוך int אז זה לא יתקמפל כי לא ניתן להמיר long ל-int בלי המרה מפורשת. מצד שני, אם תנסה לשים ערך int בתוך long אז זה יעבוד בלי שום בעיה.

נערך על-ידי שניצל

פורסם
  • מחבר

אז רגע אתה מתכוון שאם אני עושה OBJECT ומכניס משתנה פרמיטיבי הוא יהיה ב STACK זאת אומרת למקום אחר ב STACK

ואם אחרת הוא יקשר אותו ל HEAP ?


פרמיטיבי

stack[object] to stack[int]

לא פרמיטיבי

stack[object] to heap[list]

נערך על-ידי aviv00

פורסם

אתה צודק בהחלט אבל זה הרבה מעבר לרמה שלו ולא כ"כ רלוונטי לו.

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

דיונים חדשים

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.