c++ - 将 webresponse 写入 HEAP 会导致打印时出现垃圾
问题描述
我正在研究带有 WiFi 屏蔽的 Arduino。目前,我正在盾牌上发出网络请求。我正在尝试使用malloc()
写对堆的响应。现在,当打印出来时_buffer
,我得到所有标题的响应,后面跟着一堆垃圾,如下图所示:
char *NetConn::capture()
{
if (_client.available())
{
if (_buffer) // RELEASE ANY DATA HELD IN THE BUFFER IF THE BUFFER EXISTS
{
free(_buffer);
} // KEEP TRACK OF HOW LARGE THE BUFFER CURRENTLY IS TO PREPARE FOR ANY OVERFLOW
_buffer = (char *)malloc(_client.available() * sizeof(char)); // INITIALIZE THE BUFFER
Serial.println(_client.available()); // _client.available() returns 550 (size of payload)
char c;
int index = 0;
while (_client.available())
{
c = _client.read();
_buffer[index] = c;
index++;
}
int size = sizeof(_buffer) / sizeof(char);
Serial.println(size); // This is writing 2 for some reason
}
return _buffer;
}
我应该提到_client
的是 Arduino WiFi 客户端的一个实例。
我对低级内存管理非常陌生,并且正在尝试掌握整个内存管理的内容。我习惯于使用高级语言带来的舒适感;但是我正在尝试扩展。请帮助我理解这里发生了什么,并解释一下,因为我很新。谢谢!
解决方案
推荐阅读
- python - 是否有一个虚拟的 Scaler 对插入管道没有任何作用?
- xcode - 在 XCode 中按数字选择编辑器选项卡的键盘快捷键
- python - 想要将列表的元素更改为python中的字典键
- javascript - 退出循环后 ProductArray 保持为空
- ionic-framework - 关于标签与页面的离子路由问题
- python - 如何将 Xarray 图 xr.ufuncs.log(data_slice).plot(cmap='magma', vmin=0, vmax = max_value*.7) 转换为 matplotlib 图?
- reactjs - 在 React 中,相同的内容显示在另一个页面上
- python-3.x - fswatch 解析的参数没有返回预期值?
- postgresql - Quarkus 原生镜像:postgresql 连接被拒绝
- javascript - 如何在自己的网页上进行 XSS?