我使用Arduino mega与MD5库和ESP8266与SoftwareSerial。问题是370循环后,由于内存不足,Arduino自动重启。我使用FreeMemory进行故障排除,我注意到问题是每个循环的可用内存减少了。这是奇怪的行为,因为它只在我使用AT命令和MD5时出现,但是如果我在两个草图中分离草图它们正常工作而没有内存问题。 我的原始草图是一个相当复杂的,但我简化为实例所示的基本代码,以便更清楚,行为是相同的,所以如果我修复它,我将能够修复我原来的草图
#footer { /* position must be absolute and bottom must be 0 */
height: 100px;
width: 100%;
background: red;
position: fixed;
bottom: 0;
}
谢谢!
答案 0 :(得分:4)
以下是make_hash
的源代码:
unsigned char* MD5::make_hash(const void *arg)
{
MD5_CTX context;
unsigned char * hash = (unsigned char *) malloc(BLOCK_SIZE);
MD5Init(&context);
MD5Update(&context, arg, strlen((char*)arg));
MD5Final(hash, &context);
return hash;
}
如您所见,返回的malloc()
变量中有一个hash
。因此,您应该在每次循环迭代结束时调用free(hash)
。
如果您需要保留hash
,请将其放在全局范围中,并在setup()
函数中仅 创建 <。 / p>