C语言中内存分配问题!
C语言中有3个内存分配的函数void*realloc(void*ptr,unsignednewsize);void*malloc(unsignedsize);void*c...
C语言中有3个 内存分配的函数
void* realloc(void* ptr, unsigned newsize);
void* malloc(unsigned size);
void* calloc(size_t nelem, size_t elsize);
如果我在自己的自定义函数中使用上面的3个函数(其中一个)分配内存。那么当我的自定义函数调用结束时
如:
#include<stdio.h>
int *aa(void);
int main()
{
int *p;
p=aa();
*p=111;
printf("%d",*p);
getch(); return 0;
}
int *aa(void)
{
return (int *)malloc(sizeof(int));
}
经过测试 malloc() 分配的空间并没有随着 aa()的调用结束 而消失. 这样是正确的么?
这样会有什么不良影响么?
另外一个问题:
一个自定义的函数返回 “指针" 有什么用? 我觉得没多大用啊。
因为在函数内除了用 上面这3个内存分配函数创建的空间能在函数调用结束之后 保存。还有就是在参数中使用指针,可以在函数内改变其他的内存地址中的值。
除此之外,其他在函数体内创建的变量、指针都会在调用结束后消失的。
总结
函数返回指针类型的值:
1:在函数体内用到了
void* realloc(void* ptr, unsigned newsize);
void* malloc(unsigned size);
void* calloc(size_t nelem, size_t elsize);
这3个函数 因为还需要在 main() 中或其他函数中使用而返回!
对于返回指针的情况就这一种了!
使用到指针的情况还有一种:4
1:在函数参数中使用 -------用 形参 改变 实参中的值!
经我总结以上几点是指针和函数使用的极限了.
各位大神 对不对? 展开
void* realloc(void* ptr, unsigned newsize);
void* malloc(unsigned size);
void* calloc(size_t nelem, size_t elsize);
如果我在自己的自定义函数中使用上面的3个函数(其中一个)分配内存。那么当我的自定义函数调用结束时
如:
#include<stdio.h>
int *aa(void);
int main()
{
int *p;
p=aa();
*p=111;
printf("%d",*p);
getch(); return 0;
}
int *aa(void)
{
return (int *)malloc(sizeof(int));
}
经过测试 malloc() 分配的空间并没有随着 aa()的调用结束 而消失. 这样是正确的么?
这样会有什么不良影响么?
另外一个问题:
一个自定义的函数返回 “指针" 有什么用? 我觉得没多大用啊。
因为在函数内除了用 上面这3个内存分配函数创建的空间能在函数调用结束之后 保存。还有就是在参数中使用指针,可以在函数内改变其他的内存地址中的值。
除此之外,其他在函数体内创建的变量、指针都会在调用结束后消失的。
总结
函数返回指针类型的值:
1:在函数体内用到了
void* realloc(void* ptr, unsigned newsize);
void* malloc(unsigned size);
void* calloc(size_t nelem, size_t elsize);
这3个函数 因为还需要在 main() 中或其他函数中使用而返回!
对于返回指针的情况就这一种了!
使用到指针的情况还有一种:4
1:在函数参数中使用 -------用 形参 改变 实参中的值!
经我总结以上几点是指针和函数使用的极限了.
各位大神 对不对? 展开
1个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询