微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在malloc之后声明向量时出错

如何解决在malloc之后声明向量时出错

新这里!我正在尝试使用指针和向量,但在此之后以某种方式遇到错误

res.json(req.body);
res.json(req.body.pass);
res.json({pass:+req.body.pass});//response in browser -> {"pass":null}
res.json("{pass:"+req.body.pass+"}");//response in browser -> "{pass:undefined}"

这是我得到的输出

    p = (int*)malloc(10*sizeof(int));
    p[10] = 1;
    for (int i = 0; i < 11; i++) std::cout << p[i] << " ";
    std::cout << std::endl;
    std::vector<int> v(10);

我知道我错误地在分配的内存之外分配了p的元素,但是我很好奇为什么向量v的声明在此之后会失败。我还尝试了较小的p(即5而不是10)的相同想法,并且没有引发错误,我也发现了这一点。预先谢谢你!

解决方法

当数组的大小为10时,最大索引为9,循环必须使用i < 10而不是11:

p = (int*)malloc(10*sizeof(int));
p[9] = 1;
for (int i = 0; i < 10; i++) std::cout << p[i] << " ";
std::cout << std::endl;

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。