我有一个分配字符串并返回其指针的函数。当我在调用其他函数时直接使用它时,我是否需要释放内存?
例如:
char *getRow(){
char *someString = (char*) malloc(sizeof(char) * 10);
strcpy(someString , "asdqwezxc");
return someString;
}
int main(){
printf("%s", getRow());
}
在该功能中分配的内存会发生什么?有没有办法释放它,还是我需要在使用它之前将它存储到某个变量?
答案 0 :(得分:6)
即使您已从函数返回,除非您明确这样做,否则不会释放内存。因此,您必须存储返回值并调用free
。
int main(){
char* str = getRow();
printf("%s", str);
free(str);
}
答案 1 :(得分:1)
您需要将其存储在变量中,使用它,然后释放它。如果你没有释放它,你会得到内存泄漏。
答案 2 :(得分:0)
是的,你需要。 malloc从堆中分配内存,您需要显式释放它。从堆栈中分配变量,例如 char * someString ,当函数返回时将释放该变量。我认为你误解了堆栈和堆。