首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

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

2012-03-21 
这样会有内存泄露吗?RT.C/C++ code#include stdio.h#include stdlib.hchar *trdec(int idec, int ibas

这样会有内存泄露吗?
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

热点排行