标题:realloc 动太内存分配报错问题
只看楼主
niuniuchiniu
Rank: 1
等 级:新手上路
帖 子:20
专家分:9
注 册:2019-8-10
结帖率:33.33%
已结贴  问题点数:20 回复次数:3 
realloc 动太内存分配报错问题
各位大神,下面的代码在VS 2015中报狂报错,而在DEV 中顺利编译,并打出正确结果,何解?

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<string.h>


void main()
{
    int num = 0;
   
    scanf("%d", &num);
    double *p = (double *)malloc(sizeof(double)*num);

    printf("%x\n", p);
    for (double i = 0.0; (int)i < num; (int)i++)
    {
        p[(int)i] = 1.1 + i;
        printf("%f\n", p[(int)i]);
    }

    int newsize = 0;
    scanf("%d", &newsize);
   
   
    double *newp = (double *)realloc(p, sizeof(double)*newsize);

    printf("%x\n", newp);


    for (int i = 0; i < newsize; i++)
    {
        newp[i] = i + 1.2;      


        printf("%f\n", newp[i]);
    }


    free(p);
    free(newp);

    system("pause");
}

[附件ID:attach_1名称:C:\fakepath\505.png]
搜索更多相关主题的帖子: realloc printf int double num 
2019-10-15 16:38
niuniuchiniu
Rank: 1
等 级:新手上路
帖 子:20
专家分:9
注 册:2019-8-10
得分:0 
如图
2019-10-15 16:39
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:20 
这什么代码呀
double *p = (double *)malloc(sizeof(double)*num); 虽然算不上错,但在C语言中,正是因为要避免写上冗余的(double *)才规定void*可以隐式转换为type*。
printf("%x\n", p); 估计你想要的是 %p
free(p); 你不是 realloc 它了吗?
2019-10-15 17:10
niuniuchiniu
Rank: 1
等 级:新手上路
帖 子:20
专家分:9
注 册:2019-8-10
得分:0 
回复 3楼 rjsp
我累个去,原来是这么回事,我这乌七八糟的代码都是自娱自乐的,纯爱好.大神就别见笑了,问题已经解决.
2019-10-15 20:13



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-497285-1-1.html




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

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