22/03/2010, 14:26
|
| | | Fecha de Ingreso: marzo-2010
Mensajes: 19
Antigüedad: 14 años, 8 meses Puntos: 0 | |
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? |