注册 登录
编程论坛 C语言论坛

realloc 动太内存分配报错问题

niuniuchiniu 发布于 2019-10-15 16:38, 986 次点击
各位大神,下面的代码在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]
3 回复
#2
niuniuchiniu2019-10-15 16:39
只有本站会员才能查看附件,请 登录
如图
#3
rjsp2019-10-15 17:10
这什么代码呀
double *p = (double *)malloc(sizeof(double)*num); 虽然算不上错,但在C语言中,正是因为要避免写上冗余的(double *)才规定void*可以隐式转换为type*。
printf("%x\n", p); 估计你想要的是 %p
free(p); 你不是 realloc 它了吗?
#4
niuniuchiniu2019-10-15 20:13
回复 3楼 rjsp
我累个去,原来是这么回事,我这乌七八糟的代码都是自娱自乐的,纯爱好.大神就别见笑了,问题已经解决.
1