| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 552 人关注过本帖
标题:关于动态分配内存,最后一个数输出时产生错误
取消只看楼主 加入收藏
Spygg
Rank: 5Rank: 5
等 级:职业侠客
帖 子:135
专家分:394
注 册:2007-5-20
结帖率:100%
收藏
已结贴  问题点数:10 回复次数:3 
关于动态分配内存,最后一个数输出时产生错误
#include<stdio.h>
#include<stdlib.h>
main(void)
{
    int *p,n;
    printf("Input n:\n");
    scanf("%d",&n);
    while(n--)
    {
        p=(int*)malloc(sizeof(int));
        if(p==NULL)
        {
            printf("Memory alloc fail\n");
            exit(0);
        }
        printf("Input the numbers\n");
        scanf("%d",p);
        printf("%d\n",*p);
        p++;
    }
    free(p);
}
搜索更多相关主题的帖子: 动态 内存 输出 
2010-03-25 21:50
Spygg
Rank: 5Rank: 5
等 级:职业侠客
帖 子:135
专家分:394
注 册:2007-5-20
收藏
得分:0 
#include<stdio.h>
#include<stdlib.h>
main(void)
{
    int *p,n;
    printf("Input n:\n");
    scanf("%d",&n);
    p=(int*)malloc(n*sizeof(int));
        q=p;
    while(n)
    {
        p=(int*)malloc(sizeof(int));
        printf("%x",p);
        if(p==NULL)
        {
            printf("Memory alloc fail\n");
            exit(0);
        }
            
        printf("Input the numbers\n");
        scanf("%d",p);
        printf("%d\n",*p);
        n--;
        p++;
    }
    free(q);
}
2010-03-25 23:10
Spygg
Rank: 5Rank: 5
等 级:职业侠客
帖 子:135
专家分:394
注 册:2007-5-20
收藏
得分:0 
回复 2楼 ldg628
嗯,谢谢了,我也找到原因了
2010-03-25 23:11
Spygg
Rank: 5Rank: 5
等 级:职业侠客
帖 子:135
专家分:394
注 册:2007-5-20
收藏
得分:0 
回复 5楼 ldg628
嗯,谢谢了,我用p++的目的是想动态的存储一个数组,如果不用p++的话每次malloc分配的地址都是一样的,我看书上说free要释放malloc所分配的所有内存,如果开始的时候一次分配n个int长度的连续内存,在释放p是可以的,但是我想是数组的长度事先不知道,这个要怎么办啊?
2010-03-26 09:03
快速回复:关于动态分配内存,最后一个数输出时产生错误
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.022779 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved