#include <string.h> #include <stdio.h> #include <stdlib.h> #include <stdbool.h> #define BUFFER_SIZE (512) int main(void) { uint16_t *buffA, *buffB; bool test_ok = true; uint8_t *buffC; printf("Malloc Test\n"); printf("buffA: %p\n", (void *) buffA); printf("buffB: %p\n", (void *) buffB); printf("buffC: %p\n", (void *) buffC); buffA = malloc(BUFFER_SIZE * sizeof(uint16_t)); buffB = malloc(BUFFER_SIZE * sizeof(uint16_t)); printf("buffA: %p\n", (void *) buffA); printf("buffB: %p\n", (void *) buffB); printf("buffC: %p\n", (void *) buffC); if ( (buffA == NULL ) || (buffB == NULL) ) { printf("Error malloc\n"); } for(int i=0;i<BUFFER_SIZE;i++) { buffA[i] = i; } memcpy(buffB, buffA, BUFFER_SIZE * sizeof(uint16_t)); for(int i=0;i<BUFFER_SIZE;i++) { if (buffA[i] != buffB[i]) { printf("Error at postion %d\n", i); test_ok = false; break; } } free(buffA); free(buffB); printf("buffA: %p\n", (void *) buffA); printf("buffB: %p\n", (void *) buffB); printf("buffC: %p\n", (void *) buffC); /* buffC should reuse address previously used by buffA (?) */ buffC = malloc(512); printf("buffC: %p\n", (void *) buffC); if (test_ok == true) { printf("Test were OK\n"); } asm volatile ("ecall"); return 0; }