CS1010 Notes
  • Welcome
  • Lec/Tut/Lab/Exes
    • Lecture
      • Lec 01 - Computational Problem Solving
      • Lec 02 - Functions and Types
      • Lec 03 - Basic C Programming
      • Lec 04 - Conditionals
      • Lec 05 - Loops
      • Lec 06 - Call Stacks, Arrays
        • Diagnostic Quiz
      • Lec 07 - Pointers, Memory management
        • Diagnostic Quiz
      • Lec 08 - Multi-d Array, Efficiency
        • Diagnostic Quiz
      • Lec 09 - Searching and Sorting
        • Diagnostic Quiz
      • Lec 10 - More Recursion
        • Diagnostic Quiz
      • Lec 11 - Strcut & Standard I/O
        • Diagnostic Quiz
      • Lec 12 - Recap
    • Tutorial
      • Tut 01 - Computational Problem-Solving
      • Tut 02 - Functions and Conditionals
      • Tut 03 - More on Conditionals
      • Tut 04 - Loops
      • Tut 08 - Searching and Sorting
    • Lab
      • Lab 01 - Unix/Vim Setup
      • Lab 02 - Debugging
      • Lab 03 - Assert
      • Lab 04 - Test Cases
      • Lab 05 - Arrays
      • Lab 06 - Memory Errors
      • Lab 07 - Compiling with Clang
      • Lab 08 - C Preprocessor
      • Lab 09 - Backtracking
      • Lab 10 - Struct and Wrap up
    • Exercises
      • Exercise 3 - Fixed-Length Arrays
      • Exercise 4 - Dynamic Arrays and Strings
      • Exercise 6 - Searching and Sorting
      • Exercise 7 - More Recursion
      • Exercise 8 - Struct
  • Past Year Exam
    • Midterm PE
      • PE1 (AY18/19)
      • PE1 (AY20/21)
      • PE1 (AY21/22)
      • PE0 (AY22/23)
      • PE0 (AY23/24)
    • Midterm Paper
      • Midterm (AY18/19)
      • Midterm (AY20/21)
      • Midterm (AY21/22)
      • Midterm (AY22/23)
    • PE1 Review
      • PE1 (AY23/24)
    • PE2 Review
      • PE2 (AY18/19)
      • PE2 (AY20/21)
      • PE2 (AY21/22)
      • PE2 (AY22/23)
      • PE2 (AY23/24)
    • Final Paper
      • Final (AY18/19)
      • Final (AY20/21)
      • Final (AY21/22)
      • Final (AY22/23)
      • Final (AY23/24)
  • Current Year Exam
    • PE0 (AY24/25)
    • PE1 (AY24/25)
    • PE2 (AY24/25)
    • Final (AY24/25)
  • Toolbox
    • Vim & Unix
    • GDB
  • After CS1010
Powered by GitBook
On this page
  • Exercise 3 Review
  • Max
  • Padovan
  • Memory Management
  • Strings
  • Selected Problems from Exercise 4
  • Method to iterate through a string
Edit on GitHub
  1. Lec/Tut/Lab/Exes
  2. Lab

Lab 06 - Memory Errors

PreviousLab 05 - ArraysNextLab 07 - Compiling with Clang

Last updated 6 months ago

Slides:

Exercise 3 Review

Max

The optimization using half lies in the fact that it will reduce the size of the stack you use. It will use less memory.

The runtime is the same because at last you still need to visit each element once. (Prove it mathematically later)

Padovan

An elegant approach - Circular Array

Store the iii-th Padovan Number (0-based index) into list[i % 100]list [i~\%~100]list[i % 100]. Print out the result is interesting.

Access arrays will consume more time because doing pointer arithmetic takes time.

Memory Management

  1. heap-buffer-overflow is similar to index out of bound for fixed-length array.

  2. Cannot free the same memory two times

Strings

  1. String is marked using double quotation.

  2. The difference between char *s and char s[n]. The first one is stored in the text region and its element is read-only. The second one is a copy of the content stored in the text region that is on the stack.

  3. size_t is just a fancy way of say a non-negative integer.

Selected Problems from Exercise 4

Method to iterate through a string

char *s = "hello world";
while (s != '\0')
{
    // do something
    s += 1;
}

96KB
Lab6.pdf
pdf
Lab 6 Slides