1 / 11

POINTERS

POINTERS. Pointers. A pointer type is one in which the variable has a range of values corresponding to memory addresses and a special value, nil, which means an invalid address. Pointers: design issues. What is the scope and lifetime of a pointer variable?

aerona
Download Presentation

POINTERS

An Image/Link below is provided (as is) to download presentation 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. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. POINTERS

  2. Pointers A pointer type is one in which the variable has a range of values corresponding to memory addresses and a special value, nil, which means an invalid address.

  3. Pointers: design issues • What is the scope and lifetime of a pointer variable? • What is the lifetime of a dynamic variable? • Are pointers restricted in the types of objects they can point to? • Are pointers used for dynamic storage management, indirect addressing or both?

  4. Pointers: problems • Type checking - • the type a pointer can point to is called its domain type • Dangling pointers - • the pointer contains the address of a variable • which has been deallocated • Lost objects - • the pointer is destroyed, but the data to • which it points, may still be needed

  5. Pointers: problems • in Pascal: • dangling pointers can be created with specific deallocation

  6. Pointers: problems In Pascal, dangling pointers can be created with specific deallocation Pascal implementors can: - ignore the dispose - not include dispose in the language - deallocate the dynamic variable and set its pointer to nil - implement dispose completely and correctly disallowing dangling pointers

  7. Pointers: problems In C, dangling pointers and lost objects can be created as below: Dangling pointer: int *p1, *p2; p1 = (int *) malloc (sizeof(int)); p2 = p1; free (p1); p2 is now a dangling pointer

  8. Pointers: problems In C++, dangling pointers and lost objects can be created as below: Dangling pointer: int *p1, *p2; p1 = new int; p2 = p1; delete p1; p2 is now a dangling pointer

  9. Pointers: problems In C, dangling pointers and lost objects can be created Lost object: int *p1; p1 = (int *) malloc (5*sizeof(int)); ... p1 = (int *) malloc (10*sizeof(int)); The first block of allocated memory is now a lost object.

  10. Pointers: problems In C++, dangling pointers and lost objects can be created Lost object: int *p1; p1 = new int[10]; ... p1 = new int[15]; The first block of allocated memory is now a lost object.

  11. Pointers: problems In C/C++, dangling pointers and lost objects can be created, but additional capabilities are available - dereferencing - pointer arithmetic - parameter passing - pointers to functions

More Related