关于二级指针的幅值有关问题,向大家请问一下这段程序应该如何改,多谢

关于二级指针的幅值问题,向大家请教一下这段程序应该怎么改,谢谢!
#include<stdio.h>
#include<assert.h> 
#include<iostream>
#include <stdlib.h>


unsigned int Continumax(char** pOutputstr,  char* intputstr)
{
int len = 0;        //统计数字字符串的长度
int max = 0;        //当前最大数字字符串的长度
char *pstr =NULL;   //记录最大数字字符的起始位置


while(* intputstr!= '\0')
{
if(*intputstr <= '9' && *intputstr >='0')  //统计数字子字符串的长度
{
len++;
intputstr++;
continue;
}
else if (len > max)        //如果统计出来的数字字符串大于当前的最大数字子字符串的长度,则更新
{
max = len;
pstr = intputstr-len;      
len = 0;
}
intputstr++;
len = 0;
}
if (len>max)
{
max = len;
pstr = intputstr-len;
len = 0;
}
for(int i = 0 ; i<max;i++)  //将最大子字符串的值拷贝给outputstr
{
**pOutputstr = *pstr;
(*pOutputstr)++;
//pstr++;
}

pOutputstr = pOutputstr-max;
pOutputstr[max] ='\0';
// std::cout<<pOutputstr<<std::endl;

return max;  
}



int main( )
{   
char inputstr[ ]= "abc1321325";
char **out;
    out = (char **)malloc(100);
if (out == NULL)
{
printf("Out of memory!\n");
exit(1);
}
int max_numstr_length = Continumax(out,inputstr);
printf("%s\n",out);
printf("the max_numstr_length is %d\n", max_numstr_length);
free(out);
return 0;
}

编译通过,但是运行不正确,我也知道问题主要从**pOutputstr = *pstr;这一句开始,我需要将字符串内的一段内容幅值给一个二级指针,请大家教我一下怎么修改,谢谢!!
------解决思路----------------------

char *out= NULL;
int max_numstr_length = Continumax(&out, inputstr);
unsigned int Continumax(char** pOutputstr, char* intputstr)
{
*pOutputstr = (char *)malloc(100);
}

这样做,外部释放内存