c - 在函数内部使用内存分配指针

标签 c function pointers dynamic-memory-allocation

我已经创建了指针,并为其分配了内存。该内存应该包含我以数组样式传递的数字(1 个数字 = 1 个元素),而且 0 元素是数字的大小。但是,我面临使用指针更改分配的内存内的数据的问题。如果我在主函数中使用我的代码,一切都会很完美,但是当我创建另一个函数并在其中传递一个指针值时,我无法将其保存回来(如果数字大于 99999 并且需要 6 个元素)存储)。

主要功能:

int *convNum=NULL;

int main() {
int num;
convNum = malloc(sizeof(int));
if (convNum==NULL){
    printf("Allocation error\n");
    exit(0);
}

scanf("%d", &num);
convNum[0] = numLength(num);
printf("%d\n", convNum[0]);
convertNum(num, convNum);

for (int i = 1; i<=convNum[0]; i++){
    printf("%d", convNum[i]);
}

printf("\n");

return 0;
}

我正在尝试使用的功能

int convertNum(int num, int * convNum){
int temp = num;
int size = convNum[0];
convNum = realloc(convNum, sizeof(int)*(size+1));
if (convNum==NULL){
    printf("Allocation error\n");
    exit(0);
}
for (int i=size;i>0;i--){
    convNum[i] = temp % 10;
    temp = temp / 10;
}
return 0;
}

已编辑 数字大小小于 6 的输出给出了我需要的结果。其他数字的输出给了我 splinter 的大小(类似于 -10349945820)并且没有正确的结果。

最佳答案

您的重新分配不会在您对 convertNum 的函数调用后继续存在。请参阅 C-常见问题解答中的此主题:

Pointer to pointer clarification

您应该通过引用传递 convNum 指针。

关于c - 在函数内部使用内存分配指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44992789/

相关文章:

c - 为什么 fscanf() 不将此字符串存储在此指针中?

包含其代码的 Javascript 函数的属性

c - 函数执行后数组变为 NULL

c - BSD 上的 `ru_maxrss` 单元?

c - OpenSSL 的 BN_bn2bin 函数出现问题

Javascript,点击时触发功能

c++ - 我如何知道哪个函数或文件以及哪一行调用了函数?

c++ - 为什么包含指针的条件总是返回真?

c - 如何在结构成员数组中应用限制指针类型关键字?

c - 如何使用位移位/掩码将二进制转换为十六进制