1. La primera funcion no logre hacerla funcionar de nuevo, asi que la quite y lo hice desde el propio main... con el codigo que te mando ahora funciona perfectamente... tanto con el delete[] como con el delete!!!
2. El otro problema es cuando inicializo el puntero tal que asi: p="Puntero cabron". El cout lo muestra... pero el delete lo revienta. Con el codigo que te mando ahora, me funciona (igual actualizar el lxle sirvio, yo ya no se na jaja)
Código
#include<iostream> using namespace std; int contadorStrings(string s) { int cuenta=0; for(int a=0;s[a]!='\0';a++)cuenta++; return cuenta; }; int main() { string texto="Pruebas de funcionamiento"; cout<<texto<<" : "<<contadorStrings(texto)<<endl; char *d=NULL; d=new char[contadorStrings(texto)]; // Si en lugar de la secuencia for inferior pongo p="texto"; el delete rompe for(int a=0;texto[a]!='\0';a++) { d[a]=texto[a]; cout<<texto[a]<<" "; }; d[contadorStrings(texto)]='\0'; cout<<"\nEl contenido del puntero es: "<<d<<endl; delete[] d; return 0; };