Redian新闻
>
初学C,对什么该free一直搞不明白
avatar
初学C,对什么该free一直搞不明白# Programming - 葵花宝典
c*i
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
avatar
b*a
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));

avatar
S*n
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));

avatar
c*i
4
谢谢bugzilla和Silicon。
既然bugzilla提到了malloc和calloc,我想请问一下如果我的程序在运行时间上要求比
较严格的话,是不是用malloc要比calloc快一点?但是calloc又可以初始化成0,好象
要安全一些。请问大家都是怎么用的呢?

free来

【在 b******a 的大作中提到】
: malloc还是calloc?
: 其实free是跟malloc/calloc对应的。你用了一个malloc/calloc的话,就要有一个free来
: 对应。
:
: ~~~~~calloc?
:
:

avatar
c*e
5
我一般喜欢malloc, 自己memeset.
avatar
t*t
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));

avatar
c*i
7
是的。写错了。不好意思。:)

【在 t****t 的大作中提到】
: 我才注意到,你malloc是瞎写的吧,malloc只有一个参数
avatar
c*i
8
会有内存冲突的问题吗?上面我只是给了一个例子。实际中我的struct是这样的:
struct mtf {
char *seed;
int width;
int dist;
//还有一些其它的元素在这里,大概有十几个吧
};
seed是一个字符串,width记录它的长度,dist是这个字符串到一个特定的字符串的
hamming distance。

值?
元素按顺序排列,计算方便。
avatar
i*f
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。
:

avatar
j*g
10
Who allocates memory, who frees it.
拉屎还要擦屁股呢。
avatar
t*t
11
java, 免擦型屁股!

【在 j****g 的大作中提到】
: Who allocates memory, who frees it.
: 拉屎还要擦屁股呢。

avatar
k*f
12
java根本就是没有屁股眼的废物。
活活等着被一堆大便撑死。

【在 t****t 的大作中提到】
: java, 免擦型屁股!
avatar
j*g
13
java的设计是能不擦屁股的时候一定不会擦。
但是如果你想擦了,你得求他。人家还不一定高兴帮你擦。。。
相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。