memory.c 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. /*
  2. * Copyright (c) 2006-2021, RT-Thread Development Team
  3. *
  4. * SPDX-License-Identifier: Apache-2.0
  5. *
  6. * Change Logs:
  7. * Date Author Notes
  8. * 2010-11-17 Bernard first version
  9. */
  10. #include <stdio.h>
  11. #include <stdlib.h>
  12. #include <finsh.h>
  13. #include <errno.h>
  14. static int errors = 0;
  15. static void merror(const char *msg)
  16. {
  17. ++errors;
  18. printf("Error: %s\n", msg);
  19. }
  20. int libc_mem(void)
  21. {
  22. void *p;
  23. int save;
  24. errno = 0;
  25. p = malloc(-1);
  26. save = errno;
  27. if (p != NULL)
  28. merror("malloc (-1) succeeded.");
  29. if (p == NULL && save != ENOMEM)
  30. merror("errno is not set correctly");
  31. p = malloc(10);
  32. if (p == NULL)
  33. merror("malloc (10) failed.");
  34. /* realloc (p, 0) == free (p). */
  35. p = realloc(p, 0);
  36. if (p != NULL)
  37. merror("realloc (p, 0) failed.");
  38. p = malloc(0);
  39. if (p == NULL)
  40. {
  41. printf("malloc(0) returns NULL\n");
  42. }
  43. p = realloc(p, 0);
  44. if (p != NULL)
  45. merror("realloc (p, 0) failed.");
  46. return errors != 0;
  47. }
  48. FINSH_FUNCTION_EXPORT(libc_mem, memory test for libc);