了解malloc和指针增量与免费

这个问题在这里已经有了答案:

  • 如果我尝试访问malloc()'d区域之外的内存,会发生什么? 5个答案

  • 你在做什么是未定义的行为。

    int *p = (int *) malloc(sizeof(int));
    

    这从malloc返回的地址开始分配sizeof(int)字节。

    当你这样做

    *(p+1) = 41;
    

    您正在取消引用未在堆中分配的内存位置。 它的地址是p + sizeof(int) ,它是一个不受管理的地址。

    这产生了未定义的行为, 通过观察结果可以得出每个结论都是无关紧要的

    链接地址: http://www.djcxy.com/p/80403.html

    上一篇: Understanding malloc and pointer incrementation with free

    下一篇: Intricacies of malloc and free