由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - 初学C,对什么该free一直搞不明白
相关主题
再问一个free()的问题C里面一个被分配了内存的指针如何知道分配了多少?
这段代码为何要这样做?请教一个C的问题
问个c语言的问题怎么得到char *分配空间的大小?
size不固定的struct怎么定义呀?问一道有关C++ (de)serialization的问题,谢谢!
大家新年好。 请教一个 c interview question写惯了C++ code,再写C code真不习惯
C: struct 里面一个CHAR, 一个INT, 这个STRUCT 占多少字节?狠偷懒狠偷懒的一个测试
free(char *)的问题 (转载)[合集] 请教一个calloc的问题
a=(char **)malloc(12*sizeof(char *)) 是什么意思?有没有这样的memory management library?
相关话题的讨论汇总
话题: malloc话题: char话题: free话题: struct话题: sizeof
进入Programming版参与讨论
1 (共1页)
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
5
我一般喜欢malloc, 自己memeset.
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的设计是能不擦屁股的时候一定不会擦。
但是如果你想擦了,你得求他。人家还不一定高兴帮你擦。。。
1 (共1页)
进入Programming版参与讨论
相关主题
有没有这样的memory management library?大家新年好。 请教一个 c interview question
Array in CC: struct 里面一个CHAR, 一个INT, 这个STRUCT 占多少字节?
C ++ 问题free(char *)的问题 (转载)
ask a c questiona=(char **)malloc(12*sizeof(char *)) 是什么意思?
再问一个free()的问题C里面一个被分配了内存的指针如何知道分配了多少?
这段代码为何要这样做?请教一个C的问题
问个c语言的问题怎么得到char *分配空间的大小?
size不固定的struct怎么定义呀?问一道有关C++ (de)serialization的问题,谢谢!
相关话题的讨论汇总
话题: malloc话题: char话题: free话题: struct话题: sizeof