C: Pointers and Dynamic Allocation

https://github.com/pereiradaniel/c_programs/blob/master/pointers3.c 

#include <stdio.h>
#include <stdlib.h> // malloc
int main()
{
    int *a; // declare a pointer to a dynamically allocated array
    int length = 0;

    printf("Enter a length: ");
    scanf("%d", &length);

    // allocate space dynamically
    a = malloc(length * sizeof(int)); // allocates space on the heap
    
    printf("a: %p\n", a);

    for (int i=0; i<length; ++i)
        a[i] = i;
    
    for (int i=0; i<length; ++i)
        printf("a[%d]=%d\n", i, a[i]);

    free(a); // deallocate memory

    return 0;
}

// ==320== Memcheck, a memory error detector
// ==320== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al.
// ==320== Using Valgrind-3.15.0 and LibVEX; rerun with -h for copyright info
// ==320== Command: ./a.out
// ==320==
// Enter a length: 5
// a: 0x4a4e8c0
// a[0]=0
// a[1]=1
// a[2]=2
// a[3]=3
// a[4]=4
// ==320== 
// ==320== HEAP SUMMARY:
// ==320==     in use at exit: 0 bytes in 0 blocks
// ==320==   total heap usage: 3 allocs, 3 frees, 2,068 bytes allocated
// ==320==
// ==320== All heap blocks were freed -- no leaks are possible
// ==320==
// ==320== For lists of detected and suppressed errors, rerun with: -s
// ==320== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)

Popular posts from this blog

C programming and relevancy

Shakespeare AI: My lady is more beauteous than a rose.

C: Temperature Conversion With Main Repeat