C dynamic memory allocation
The C language does not by default check that the calls to these functions, or the accesses to the arrays they create, are used correctly. If the program does something invalid, such as accessing memory beyond what has been allocated, or using memory that has been freed, this can cause the program to crash or to behave in some other undesirable way. In some cases, improper use of these functions can create security vulnerabilities that allow hackers to read or modify sensitive data or run malicious code.