Рассмотрим простой пример
void Some_Func(int a)
{
a=4;
}
int main()
{
int a=2;
Some_Func(a);
return 0;
}
При выходе из функции a все равно будет равно 2, так как при передаче параметра в функцию, ты передаешь копию параметра, а не сам параметр. Чтобы изменения производимые в функции также действовали на саму переменную, нужно передавать ссылку на данную переменную. Соответственно функцию также оформлять, так чтобы она принимала ссылку, а не значение.
Теперь рассмотрим твой пример. Ты пытаешься передать указатель как параметр, естественно любые действия над самим указателем внутри функции не будут иметь действия вне ее
Тут есть несколько выходов из положения:
1) Оформить функцию для приема ссылки на указатель
#define NULL 0
void My_function(char **pBuffer)
{
(*pBuffer) = new char[100000];
}
void OnBnClickedOk()
{
char *pBuffer = NULL;
My_function(&pBuffer);
delete [] pBuffer;
}
int main()
{
OnBnClickedOk();
return 0;
}
2) возвращать с функции указатель и присваивать его к твоему указателю
char *My_function(void)
{
return new char[100000];
}
void OnBnClickedOk()
{
char *pBuffer = My_function();
delete [] pBuffer;
}
int main()
{
OnBnClickedOk();
return 0;
}