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