begin process at 2012 05 28 09:26:52
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Divers

 > 

Débutant(e)

 > 

Assertion Failed


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Assertion Failed

jeudi 26 novembre 2009 à 05:19:35 | Assertion Failed

TheReb

Bonjour!

Cela fait maintenant une journée que j'essaie de trouver le problème dans mon code, en vain. J'obtiens toujours l'erreur Assertion failed... dbgdel.cpp line 52. Expression: _BLOCK_TYPE_IS_INVALID(pHead->nBlockUse)

Voici mon code (n'oubliez pas que j'en suis a ma première semaine en c++)

MAIN.CPP
Code C/C++ :
#include <iostream>
#include "global.h"
#include "sString.h"

using namespace std;

int main()
{
	sString test("cave");
	sString cave = test;
	cave = cave.left(3);
	test = test + " twite";
	cout << test << endl;
	cout << cave << endl;
	test.show();
	cave.show();
	test.clear();
	cout << "Test" << test << endl;
	test = "MONGOLTWIT";
	test = test.leftAt(7,2);
	cout << "Test: " << test << endl;
	test = test + " " + cave;
	cout << "Test: " << test << endl;
	cout << "____" << endl;
	test = test.right(5);
	cout << "Test: " << test << endl;
	return 0;
}


SSTRING.CPP
Code C/C++ :
#include "sString.h"
#include "global.h"

using namespace std;
// Constructeurs
sString::sString(void)
{
	m_string = NULL;
	m_length = 0;
}

sString::sString(const char *str)
{
	m_string = sscopy(str);
	m_length = sslen(str);
}

sString::sString(const sString &str)
{
	m_string = sscopy(str.m_string);
	m_length = str.m_length;
}

// -------------------------------
//Destructeur

sString::~sString(void)
{
	delete[] m_string;
}

// Copie

char* sString::sscopy(const char *str)
{
	int len = sslen(str);
	char *chr = new char[len+1];

	for (int x=0 ; x < len ; x++)
	{
		chr[x] = str[x];
	}

	chr[len] = '\0';
	return chr;
}

// Longueur



int sString::sslen(const char *str)
{
	int xlen = 0;

	while (str[xlen] != '\0')
		xlen++;

	return xlen;
}


//Affichage

void sString::show()
{
    std::cout << m_string << std::endl;
}


// Operators

sString sString::operator=(const char *str)
{
    delete[] m_string;

    m_string = sscopy(str);
    m_length = sslen(str);

    return *this;
}

sString sString::operator=(const sString &str)
{
    delete[] m_string;

    m_string = sscopy(str.m_string);
    m_length = str.m_length;

    return *this;
}

sString sString::operator+(const char *str)
{
    int taille = m_length + sslen(str);
    char *tmpStr = new char[taille+1];

    for (int x=0 ; x < sslen(m_string) ; x++)
    {
        tmpStr[x] = m_string[x];
    }

    for (int i=m_length ; i < taille ; i++)
    {
        tmpStr[i] = str[i - m_length];
    }
    tmpStr[taille] = '\0';
    sString result(tmpStr);
    delete[] tmpStr;
    return result;
}

sString sString::operator+(const sString &str)
{
    int taille = m_length + str.m_length;
    char *tmpStr = new char[taille+1];

    for (int x=0 ; x < sslen(m_string) ; x++)
    {
        tmpStr[x] = m_string[x];
    }

    for (int i=m_length ; i < taille ; i++)
    {
        tmpStr[i] = str.m_string[i - m_length];
    }
    tmpStr[taille] = '\0';
    sString result(tmpStr);
    delete[] tmpStr;
    return result;
}

char* sString::getStr()
{
    return m_string;
}

void sString::clear()
{
    m_string = "";
    m_length = 0;
}

sString sString::left(int len)
{
	if (len > sslen(m_string))
	{
		sString result = "ERROR: OVERFLOW (len > totallength)";
		return result;
	}
    char *tmpStr = new char[len+1];
    for (int i = 0; i < len; i++)
    {
        tmpStr[i] = m_string[i];
    }
    tmpStr[len] = '\0';

    sString result(tmpStr);
    delete[] tmpStr;
    return result;
}

sString sString::leftAt(int len, int pos)
{
	int taille = sslen(m_string);
	if (pos + len > taille)
	{
		sString result = "ERROR: OVERFLOW (length + position > totallength)";
		return result;
	}

    char *tmpStr = new char[taille - len + 1];
    for (int i = pos; i-pos < len; i++)
    {
        tmpStr[i-pos] = m_string[i];
    }
    tmpStr[taille - len + pos] = '\0';

    sString result(tmpStr);
    delete[] tmpStr;
    return result;
}

sString sString::right(int len)
{
	int x = 0;
	int i = 0;
	int taille = sslen(m_string);
    char *tmpStr = new char[len+1];
    for (i = taille - len; i < taille; i++)
    {
        tmpStr[x] = m_string[i];
        x++;
    }
    tmpStr[len] = '\0';

    sString result(tmpStr);
    delete[] tmpStr;
    return result;
}

ostream &operator<<( ostream &out, sString &str )
{
    out << str.getStr();
    return out;
}


Pour votre info, global.h contient seulement la déclaration de NULL, puisque en .net 2008, cette constante n'est plus déclarée. sstring.h contient la déclaration de la classe.

Merci beaucoup de votre aide

Emperorized


Cette discussion est classée dans : int, result, len, tmpstr, sstring


Répondre à ce message

Sujets en rapport avec ce message

dépassement capacité d'un float et int [ par golum ] result=scanf("%f",&coef); if (result !=0 && coef !=0)Voila si j'entre un nombre délirant style 9999999999999999999999999999999999999999999999999999999 Algorithme addition de nombres de bases kelconk [ par AlexMAN ] Bonjour,Voila, j'ai un ptit souci avec un algo d'addition de nombre de bases kelconk : il marche apparement "parfaitement", mais jorai aimé savoir sav Fonction Convert [ par nem02004 ] Voila mon code marche, mais comme je ne suis pas un super programmeur, je pense qu'il ya moyen de l'amélioré, c'est la que vous intervenez :DEn fait i Modification d'un crytage d'hostname sur unrealircd3.2.7 [ par Loveurs ] Bonsoir,J'aimerai savoir si quelqu'un serrai comment modifier le crytage d'host de unreal de façon à faire crytage.wanadoo.fr pour les ip résolues, es Probleme de cosinus [ par Michou69004 ] Bonjour a tous. J'ai un petit probleme avec mon code. pour effectuer une rotation , j'utilise ma fonction my_rota et je suppose qu'il y a un probleme Segmentation fault [ par SergentP ] Salut à tous, J'obtiens l'érreur "Segmentation fault" lorsque je compile ce code(lit les lignes d'un fichier et extrait une certaine partie de chacune Url encoding [ par Lestat_2070 ] Bonjour à tous,Tout d'abord, j'espère que je ne me trompes pas de section, pour ce sujet. Ensuite, j'essaye de faire une fonction comparable à la fonc Fonction substr en C [ par julien_boss ] Bonjour,j'ai codé cette fonction, sensée être l'équivalent de string::substr(...) en C :char * StrSub(const char *s, int pos, int len){    char *ps = concaténation plusieurs int [ par johan3240 ] Bonjour tout le monde, j'ai un petit code en C à faire sujet : en gros c'est u programme qui utilise la division successive. à la fin de mes divisions programme puissance suivant le protocole rpc [ par imoum ] j'ai une structure [code=cpp]param{int a; int b;}; [/code]et j'ai une fonction dans le programme serveur [code=cpp]pui_2_svc(param *argp, struct svc_


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,671 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales