Ver Mensaje Individual
  #1 (permalink)  
Antiguo 22/03/2010, 14:26
Avatar de jose_desa
jose_desa
 
Fecha de Ingreso: marzo-2010
Mensajes: 19
Antigüedad: 14 años, 1 mes
Puntos: 0
Mensaje Punteros en c++

Hola, quisiera ver si me pueden ayudar con una duda que tengo, se los agradecere mucho. Quisiera ver por que me aparece este error:

Debug Assertion Failed!
Expression:_BLOCK_TYPE_IS_VALID(pHead->nBlockuse)
y me parece la opcion de Anular, Reitentar, y Anular.

Si presiono en Reintentar me aprece otro mensaje diciendo:
Se ha producido la excepcion unknown software exception (0x80000003) en la direccion 0x00404bc9.
Precione Aceptar o cancelar.
Si presiono cancelar me abre el visual para depurar el programa en:dbgdel.cpp

y me aparece el siguiente codigo(en azul esta la parte donde me marca que se detiene)
void operator delete(
void *pUserData
)
{
_CrtMemBlockHeader * pHead;

RTCCALLBACK(_RTC_Free_hook, (pUserData, 0));

if (pUserData == NULL)
return;

_mlock(_HEAP_LOCK); /* block other threads */
__TRY

/* get a pointer to memory block header */
pHead = pHdr(pUserData);


/* verify block type */
_ASSERTE(_BLOCK_TYPE_IS_VALID(pHead->nBlockUse));

_free_dbg( pUserData, pHead->nBlockUse );

__FINALLY
_munlock(_HEAP_LOCK); /* release other threads */
__END_TRY_FINALLY

return;
}

#endif /* _DEBUG */


El codigo de mi programa es el siguiente:

#include<iostream.h>
#include<conio.h>
#include<time.h>

void main()
{
srand(time(NULL));
int *pNums, n,cual;
cout<<"\n¿Cuantos aleatorios vas a generar (maximo 32500)?";
cin>>n;
if(n<2) n=2;
if(n>32500) n=32500;
for(int i=0; i<n; i++)
{
if(i==0)
pNums= new int;

*(pNums+i)= rand()%100+1;


if(i<10||i==n-1)
{
cout<<"\nNumero aleatorio "<<i+1<<" "<<*pNums;//*(pNums+i);
cout<<"\nEl numero aleatorio "<<i+1
<<" esta grabado en la direccion "<<pNums;//+i;
cout<<"\aTome nota del espacio ocupado en memoria"<<endl;
getch();
}
}
cout<<"PUNTERO SU dir "<<&pNums<<" a donde apunta "<<pNums
<<" que valor tiene "<<*pNums;
cout<<"Cual numero desea ver: ";
cin>>cual;
cout<<"El numero en "<<cual<<" es: "<<*(pNums+(cual-1))<<endl;
getch();
}

Pienso yo que el error esta en la parte que esta en rojo ya que si lo quito no me marca este error. Por que me marca este error?