读书人

这样会有内存泄露吗?该怎么处理

发布时间: 2012-03-21 13:33:15 作者: rapoo

这样会有内存泄露吗?
RT.

C/C++ code
#include <stdio.h>#include <stdlib.h>char *trdec(int idec, int ibase);int main(){    int n, b;    char *s;    n = 100;    b = 8;    s = trdec(n, b);    printf("%d -> %d : %s\n", n, b, s);    free(s);    return 0;}char *trdec(int idec, int ibase){    char *strdr = malloc(sizeof(char) * 20);    char t;    int i, idr, p = 0;    while(idec != 0)    {        idr = idec % ibase;        if(idr >= 10)        {            strdr[p++] = idr + 55;        }        else        {            strdr[p++] = idr + 48;        }        idec /= ibase;    }    for(i = 0; i < p / 2; i++)    {        t = strdr[i];        strdr[i] = strdr[p - i - 1];        strdr[p - i - 1] = t;    }    strdr[p] = '\0';    return strdr;}


[解决办法]
不会。
[解决办法]
肯定不会啊
[解决办法]
char *strdr = malloc(sizeof(char) * 20);
修改为:
char *strdr = (char*)malloc(sizeof(char) * 20);
输出结果:
100 -> 8 : 144
[解决办法]
木有,
一个 malloc 对应一个free

读书人网 >C语言

热点推荐