如何在C中对函数内部进行malloc并返回指针



下面是一些psudo,但我正在努力实现这一点。问题如所写,它返回一个空指针。

int testFunction(char *t) {
int size = 100;
t = malloc(100 + 1);
t = <do a bunch of stuff to assign a value>;
return size;
}
int runIt() {
char *str = 0;
int str_size = 0;
str_size = testFunction(str);
<at this point, str is blank and unmodified, what's wrong?>
free(str);
return 0;
}

如果我有一个预定义的大小,比如char str[100]=">,并且我不尝试malloc或释放内存后记,这就可以了。我需要能够使大小动态。

我也试过这个,但似乎遇到了一个损坏的指针。

int testFunction(char **t) {
int size = 100;
t = malloc(100 + 1);
t = <do a bunch of stuff to assign a value>;
return size;
}
int runIt() {
char *str = 0;
int str_size = 0;
str_size = testFunction(&str);
<at this point, str is blank and unmodified, what's wrong?>
free(str);
return 0;
}

谢谢!

第二个例子已经差不多了,但更改

int testFunction(char **t) {
...
t = malloc(100 + 1);

int testFunction(char **t) {
...
*t = malloc(100 + 1);

这一点是,你正在传递一个char**,一个指向指针的指针,所以你想把malloc分配给它所指向的(指针)。

您的测试函数有点落后。大小应为输入。分配的指针应该是输出:

char* testFunction(int size) {
char* p = malloc(size);
<do a bunch of stuff to assign a value>;
return p;
}
int runIt() {
char *str = 0;
int str_size = 100;
str = testFunction(str_size);
<do something>
free(str);
return 0;
}

编辑

根据注释,使大小也成为输出。

char* testFunction(int *size) {
*size = <compute size>;
char* p = malloc(size);
<do a bunch of stuff to assign a value>;
return p;
}
int runIt() {
char *str = 0;
int str_size;
str = testFunction(&str_size);
<do something>
free(str);
return 0;
}

相关内容

  • 没有找到相关文章

最新更新