פורסם 2008 ביולי 1817 שנים שלום אנשיםאני מקצה דינמית זכרון בתוכנית ומכניס לשם מחרוזת כגודל ההקצאה אבל משום מה כשאני מדפיס את מה שהכנסתי זה מדפיס לי גם זבל אחרי המחרוזתמישהו? איך נפתרים מהזבלptr[i]=(char*)malloc((size)*sizeof(char)); if (!ptr[i]) cout<<"error"; for(int j=0;j<size;j++) [br]פורסם בתאריך: 18.07.2008 בשעה 20:11:07שכחתי שורה אחרונהptr[i][j]=input[j];
פורסם 2008 ביולי 1817 שנים זכרת שמחרוזות ב-C חייבות להסתיים ב-'0\'? שים לב שאתה צריך בשביל זה להקצות מקום אחד יותר מאורך המחרוזת.
פורסם 2008 ביולי 1917 שנים מחבר הקצתי אחד יותר.....עדיין יש לי זבל בהקצאה דינמית כשאני מדפיס. אני לא יודע למה??
פורסם 2008 ביולי 1917 שנים למה שלא תשתמש בNEW וDELETE במקום בMALLOC וFREEא. מה זה משנה?ב. delete ו-new הם אופרטורים של ++C. אם הוא כותב ב-C, הוא צריך להשתמש ב-malloc ו-free.פותח הת'רד - יעזור מאוד אם תעלה גם את הקוד שבו אתה קורא את המחרוזות, והקוד שבו אתה מדפיס אותן.
פורסם 2008 ביולי 2017 שנים צודק, לא שמתי לב לזה. פותח הת'רד צריך להחליט אם הוא עובד ב-C או ++C. שעטנז כזה זה לא בריא
פורסם 2008 ביולי 2117 שנים זה שאתה מקצה אחד יותר לא משנה כלום.ההקצאה של C פשוט משאירה בזכרון המוקצה את מה שהיה בו קודם, כלומר, זבל.כל עוד אתה לא מאפס את התו האחרון כלומרptr[i][size - 1] = 0אין לך כל אפשרות לדעת מה יש באותו מיקום, והפונקציה cout תדפיס את המידע בזכרון עד שתגיע לתא שערכו (במקרה כנראה) 0.
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.