While developing a piece of software for embedded system I used realloc() function many times. Now I’ve been said that I “should not use realloc() in embedded” without any explanation.
Is realloc() dangerous for embedded system and why?
Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.
Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.
Lost your password? Please enter your email address. You will receive a link and will create a new password via email.
Please briefly explain why you feel this question should be reported.
Please briefly explain why you feel this answer should be reported.
Please briefly explain why you feel this user should be reported.
Yes, all dynamic memory allocation is regarded as dangerous, and it is banned from most “high integrity” embedded systems, such as industrial/automotive/aerospace/med-tech etc etc. The answer to your question depends on what sort of embedded system you are doing.
The reasons it’s banned from high integrity embedded systems is not only the potential memory leaks, but also a lot of dangerous undefined/unspecified/impl.defined behavior asociated with those functions.
EDIT: I also forgot to mention heap fragmentation, which is another danger. In addition, MISRA-C also mentions “data inconsistency, memory exhaustion, non-deterministic behaviour” as reasons why it shouldn’t be used. The former two seem rather subjective, but non-deterministic behaviour is definitely something that isn’t allowed in these kind of systems.
References: