Originariamente inviato da zero85
premessa: non vedendo il codice che richiama la tua funzione ho scritto un ipotetica implementazione:
codice:
int main()
{
    myType *a = new myType[10];
    cout << "Riallocazione..." << endl;
    myType obj1;
    myFunction(a,10,obj1);
    return 0;
}
Io con il tuo codice ho un problema: quando il programma fa il delete di s la corrispondenza: indirizzo di s == indirizzo di a viene persa, quindi se tento di fare operazioni su a mi ritrovo un pointer NULL...

io farei così:
codice:
#include <iostream>

using namespace std;

typedef struct _mytype{
        int a;
        int b; 
        _mytype()
        {
                 a = 3;
                 b  = 5;
        }
        
        void stampa()
        {
             cout << a << ";" << b << endl;
        } 
} myType;

void* realloca(myType *s, const int x, myType &obj);

int main()
{
    myType *a = new myType[10];
    for(int k = 0; k < 10; k++)
    {
            a[k].stampa();
    }
    cout << "Riallocazione..." << endl;
    myType obj1;
    a = (myType*)realloca(a,10,obj1);
    for(int k = 0; k < 11; k++)
    {
            a[k].stampa();
    }
    system("pause");
    return 0;
}

void* realloca(myType *s, const int x, myType &obj)
{
     myType * tmp = new myType[x];
     for(int i = 0; i < x; i++)
     {
             *(tmp + i) = *(s + i);
     }
     delete[] s;
     s = new myType[x+1];
     for (int i = 0; i < x; i++)
     {
         *(s+i) = *(tmp+i);
     }
     *(s+x+1) = obj;
     return (void*)s;
}
:master: Non ho capito qualìè il problema che hai individuato e la soluzione che hai portato.Mi spieghi in altre parole, forse sono un po tardo io