c*****i 发帖数: 25 | 1 我知道这些问题显得都很笨。请表拍我。谢谢您的指教。
比如说下面这段code
struct a {
char *b;
int c;
};
int n, m, i;
struct a *pa = (struct a*)malloc(n, sizeof(struct a));
for(i = 0; i < n; i++) {
pa[i].b = (char*)malloc(m, sizeof(char));
}
//需要把每一个pa[i].b都free吗?
for(i = 0; i < n; i++) {
free(pa[i].b);
}
//还是只有这句就够了?
free(pa);
还有一段code: :)
char **s;
int n, m, i;
s = (char**)malloc(n, sizeof(char*));
for(i = 0; i < n; i++) {
s[i] = (char*)malloc(m, sizeof(char));
}
// 需要把每一个s[i]都free吗?
for(i = 0; i < n; i++) {
fre |
b******a 发帖数: 215 | 2 malloc还是calloc?
其实free是跟malloc/calloc对应的。你用了一个malloc/calloc的话,就要有一个free来
对应。
~~~~~calloc?
【在 c*****i 的大作中提到】 : 我知道这些问题显得都很笨。请表拍我。谢谢您的指教。 : 比如说下面这段code : struct a { : char *b; : int c; : }; : int n, m, i; : struct a *pa = (struct a*)malloc(n, sizeof(struct a)); : for(i = 0; i < n; i++) { : pa[i].b = (char*)malloc(m, sizeof(char));
|
S*****n 发帖数: 227 | 3
需要
不够
【在 c*****i 的大作中提到】 : 我知道这些问题显得都很笨。请表拍我。谢谢您的指教。 : 比如说下面这段code : struct a { : char *b; : int c; : }; : int n, m, i; : struct a *pa = (struct a*)malloc(n, sizeof(struct a)); : for(i = 0; i < n; i++) { : pa[i].b = (char*)malloc(m, sizeof(char));
|
c*****i 发帖数: 25 | 4 谢谢bugzilla和Silicon。
既然bugzilla提到了malloc和calloc,我想请问一下如果我的程序在运行时间上要求比
较严格的话,是不是用malloc要比calloc快一点?但是calloc又可以初始化成0,好象
要安全一些。请问大家都是怎么用的呢?
free来
【在 b******a 的大作中提到】 : malloc还是calloc? : 其实free是跟malloc/calloc对应的。你用了一个malloc/calloc的话,就要有一个free来 : 对应。 : : ~~~~~calloc? : :
|
c****e 发帖数: 1453 | |
t****t 发帖数: 6806 | 6 我才注意到,你malloc是瞎写的吧,malloc只有一个参数
【在 c*****i 的大作中提到】 : 我知道这些问题显得都很笨。请表拍我。谢谢您的指教。 : 比如说下面这段code : struct a { : char *b; : int c; : }; : int n, m, i; : struct a *pa = (struct a*)malloc(n, sizeof(struct a)); : for(i = 0; i < n; i++) { : pa[i].b = (char*)malloc(m, sizeof(char));
|
c*****i 发帖数: 25 | 7 是的。写错了。不好意思。:)
【在 t****t 的大作中提到】 : 我才注意到,你malloc是瞎写的吧,malloc只有一个参数
|
c*****i 发帖数: 25 | 8 会有内存冲突的问题吗?上面我只是给了一个例子。实际中我的struct是这样的:
struct mtf {
char *seed;
int width;
int dist;
//还有一些其它的元素在这里,大概有十几个吧
};
seed是一个字符串,width记录它的长度,dist是这个字符串到一个特定的字符串的
hamming distance。
值?
元素按顺序排列,计算方便。 |
i*****f 发帖数: 578 | 9 我知道,我也有类似的应用,总结起来就是:
有一个struct B, B里面包含一个指针指向另一个需要malloc的东东;这个B又是一个数
组,所以有B[]
这种情况在free的时候要先free B[i].p, for each i, 然后free 所有的B
呵呵
【在 c*****i 的大作中提到】 : 会有内存冲突的问题吗?上面我只是给了一个例子。实际中我的struct是这样的: : struct mtf { : char *seed; : int width; : int dist; : //还有一些其它的元素在这里,大概有十几个吧 : }; : seed是一个字符串,width记录它的长度,dist是这个字符串到一个特定的字符串的 : hamming distance。 :
|
j****g 发帖数: 597 | 10 Who allocates memory, who frees it.
拉屎还要擦屁股呢。 |
t****t 发帖数: 6806 | 11 java, 免擦型屁股!
【在 j****g 的大作中提到】 : Who allocates memory, who frees it. : 拉屎还要擦屁股呢。
|
k****f 发帖数: 3794 | 12 java根本就是没有屁股眼的废物。
活活等着被一堆大便撑死。
【在 t****t 的大作中提到】 : java, 免擦型屁股!
|
j****g 发帖数: 597 | 13 java的设计是能不擦屁股的时候一定不会擦。
但是如果你想擦了,你得求他。人家还不一定高兴帮你擦。。。 |