1 / 12

# CSE 143 Section AD - PowerPoint PPT Presentation

CSE 143 Section AD. Quiz Section 8. Announcements. If you are not yet officially registered for this course, please make sure to talk to me after class. There will be another debugger tutorial today at 3:30 in MGH Room 30.

I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.

- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript

Quiz Section 8

Jeff West - Quiz Section 8

Announcements
• If you are not yet officially registered for this course, please make sure to talk to me after class.
• There will be another debugger tutorial today at 3:30 in MGH Room 30.
• I’d like to welcome as much feedback as possible about how well quiz sections are preparing you so please feel free to talk to me about them… I have linked a feedback form from the Section AD web page if you want to remain anonymous…
• Grades are on the course website – check to make sure yours are right ;)
• There is a midterm in one week… if there is anything at all that is unclear to you please email me or visit my office hours this week so that studying for the midterm next week can be as painless as possible.

Jeff West - Quiz Section 8

Pointer Types (1)

What will the following code print to the screen?

int i = 3;

int j = 3;

int* ip1 = &i;

int* ip2 = &j;

if(ip1 == ip2)

cout << “They are equal”;

else

cout << “They are unequal”;

Jeff West - Quiz Section 8

Pointer Types (2)

That printed “They are unequal”…

What will the following code print to the screen?

int i = 3;

int j = 3;

int* ip1 = &i;

int* ip2 = &j;

if(*ip1 == *ip2)

cout << “They are equal”;

else

cout << “They are unequal”;

Jeff West - Quiz Section 8

Pointer Types (3)

That printed “They are equal”…

What will the following code print to the screen?

int i = 3;

int* ip1 = &i;

int* ip2 = ip1;

if(&ip1 == &ip2)

cout << “They are equal”;

else

cout << “They are unequal”;

Jeff West - Quiz Section 8

new

That printed “They are unequal”…

int i = 3;

int* ip = &i;

What if you don’t want to take up space for i until you are actually going to use it?

int* ip;

ip = new int; // allocate new integer

*ip = 3; // assign 3 to int you created

Jeff West - Quiz Section 8

delete

When you’re done using an object you can free up the memory it uses by deleting it!

Example:

int* ip;

ip = new int; // allocate new integer

*ip = 3; // assign 3 to int you created

delete ip; // deallocates integer

Jeff West - Quiz Section 8

newing and deleting arrays

int *p;

p = new int[10];

for(int i = 0; i < 10; i++)

p[i] = 2 * i;

cout << p[2];

delete [] p; // USE THE RIGHT // VERSION OF // DELETE

Jeff West - Quiz Section 8

Memory Leak (Losing the Pointer)

A memory leak occurs when you lose the pointer to memory without giving the memory back to the operating system. The memory will just sit in the heap with a “used” flag on it but you will have no way to access it!

Example:

int* ip;

P = new int;

*p = 12;

p = new int; // reassigned p… what about

// where it used to point?

*p = 17;

Jeff West - Quiz Section 8

Dangling Pointers (Losing the Heap Space)

A dangling pointer is sort of the “opposite problem.” A dangling pointer is a pointer that “thinks” that it is pointing to an object in memory when in reality the object in memory has already been returned to the operating system.

Example:

int *ip1 = new int;

int *ip2;

*p = 12;

q = p;

delete p;

*q = 15; // where will 15 be stored?

Jeff West - Quiz Section 8

Okay neat, now what?

Okay, so you can get new values… but how can this possibly help us in the “real” world?

Imagine creating an internet game (EverQuest, Quake, whatever you like)… you want to allow as many as 2,000 characters to exist in your game at one time but you also want to be as efficient as possible… if your game stores all characters active in the game in an array of character objects, how big should the array be?

Jeff West - Quiz Section 8