Redian新闻
>
怎么在main()函数里面free我malloc()的空间
avatar
怎么在main()函数里面free我malloc()的空间# JobHunting - 待字闺中
b*g
1
void func(int *ptr)
{
ptr = (int *)malloc(sizeof(int) * 10);
}
void main(void)
{
int *ptr = 0;
for(int i=0; i<10; i++)
{
func(ptr);
}
}
问题:for循环里面的func(ptr)都干了些什么?
我回答分配了10次,每次10个整形的空间。
又问:main()函数要怎么改才能free由malloc()分配的的空间?
我就不回了。
avatar
u*0
2
free(ptr);
avatar
R*i
3

楼主,不是搞笑吧?这是最基本的c/c++的东东啊。

【在 b****g 的大作中提到】
: void func(int *ptr)
: {
: ptr = (int *)malloc(sizeof(int) * 10);
: }
: void main(void)
: {
: int *ptr = 0;
: for(int i=0; i<10; i++)
: {
: func(ptr);

avatar
y*e
4
这样不行吧? ptr 里是malloc出来的地址么?

【在 u****0 的大作中提到】
: free(ptr);
avatar
o*7
5
那个func的input该用 **
avatar
b*g
6
能具体讲一下吗?
即使用**ptr,在main函数里面执行完func()之后ptr还是等于0啊

【在 o********7 的大作中提到】
: 那个func的input该用 **
avatar
c*b
7
void func(int **ptr)
{
*ptr = (int *)malloc(sizeof(int) * 10);
}
void main(void)
{
int *ptr = 0;
for(int i=0; i<10; i++)
{
func(&ptr);
free(ptr);
}
}

【在 b****g 的大作中提到】
: 能具体讲一下吗?
: 即使用**ptr,在main函数里面执行完func()之后ptr还是等于0啊

avatar
b*g
8
谢谢。原来和一个*的情况是一样的,要想改变参数的值,就把他的地址传进去。

【在 c*b 的大作中提到】
: void func(int **ptr)
: {
: *ptr = (int *)malloc(sizeof(int) * 10);
: }
: void main(void)
: {
: int *ptr = 0;
: for(int i=0; i<10; i++)
: {
: func(&ptr);

相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。