#include <stdio.h>
#include <stdlib.h>int main(void)
{
    int *p, i;    p = (int *)malloc(6 * sizeof(int)) ;
    if (p == NULL) {    //判断是否为空
        printf("内存分配出错!");
        exit(1);
    }    for (i=0; i<6; i++) {
        p++;
        *p = i;
        printf("%2d", *p);
    }
    printf("\n");    free(p);    //这句运行时出错    return 0;
}内存分配出错??

解决方案 »

  1.   

    因为你在for循环中修改了p指针的地址值,所以最后free就出错了.#include <stdio.h>
    #include <stdlib.h>int main(void)
    {
        int *p, i;

        p = (int *)malloc(6 * sizeof(int)) ;
        if (p == NULL) {    //ÅжÏÊÇ·ñΪ¿Õ
            printf("ÄÚ´æ·ÖÅä³ö´í£¡");
            exit(1);
        }    for (i=0; i<6; i++) {
            *(p+i) = i;
            printf("%2d", *(p+i));
        }
        printf("\n");

        free(p);    //Õâ¾äÔËÐÐʱ³ö´í

        return 0;
    }