2016-03-20 17 views
0

Kodum, xmemory0 satırında 909 ile ilgili bir sorun olduğunda, programın gerçek sonuna kadar iyi bir performans sergiliyor. benim sınıfları inşa etmeye başladığımızdavoid deallocate adresindeki xmemory0 istisnası

void deallocate(pointer _Ptr, size_type _Count) 
     { // deallocate object at _Ptr, ignore size 
     _Mybase::deallocate(_Ptr, _Count); 
     } 

kodum çok temel bir twitter istemcisi başlangıcıdır, sorun yalnızca gerçekten meydana geldi. Onun% 99'unun benim vektörümle yaptığına eminim ama onunla hiçbir şey yapmadım, bu yüzden emin değilim. Bu hatayı online aradığımda benzer sorunları bulamıyorum. Ben twitcurl kütüphanesi kullandığım gibi kim gerçekten benim kod derlemek için her şeyi inşa etmek istemek için gerçekten zor ve haksızlık olurdu, ama burada sadece ne benim

tüm sınıfları ile benim başlık dosyası bu ne olduğunu görebilirsiniz
#pragma once 
#ifndef CLASSES_H 
#define CLASSES_H 
#include<string> 
#include<vector> 
#include"rapidjson/document.h" 
#include"rapidjson/reader.h" 
#include"rapidjson/writer.h" 
#include"rapidjson/stringbuffer.h" 
#include "rapidjson/rapidjson.h" 
#include"rapidjson/prettywriter.h" 
using namespace rapidjson; 


class tweet { 
public: 
    tweet(); 
    ~tweet(); 
    std::string userName; 
    std::string userid; 
    std::string tweetData; 

}; 
class timeline { 
public: 
    std::vector<tweet> tweets; 
    timeline(); 
    ~timeline(); 
    void set_userTimeline(std::string); 
}; 
class user:public timeline { 

    public: 
     user(); 
     std::string name; 
     std::string screenName; 
     std::string user_ID; 
     timeline userTimeline; 
     void loadUserData(std::string); 
     std::string get_name(); 
     std::string get_screenName(); 
     std::string get_user_ID(); 
     void set_name(std::string); 
     void set_screenName(std::string); 
     void set_user_ID(std::string); 
     ~user(); 
}; 

#endif /*CLASSES_H*/ 

benim uygulama dosyası

#include "classes.h" 

tweet::tweet() 
{ 

} 
tweet::~tweet() 
{ 

} 

timeline::timeline() 
{ 

} 
timeline::~timeline() 
{ 

} 
void timeline::set_userTimeline(std::string) 
{ 

} 
user::user() 
{ 

} 
std::string user::get_name() 
{ 
    return name; 
} 
std::string user::get_screenName() 
{ 
    return screenName; 
} 
std::string user::get_user_ID() 
{ 
    return user_ID; 
} 
void user::set_name(std::string n) 
{ 
    name = n; 
} 
void user::set_screenName(std::string sn) 
{ 
    screenName = sn; 
} 
void user::set_user_ID(std::string id) 
{ 
    user_ID = id; 
} 

void user::loadUserData(std::string input) 
{ 
    bool userLoaded = false; 
    std::string json; 
    json = input; 
    Document d; 
    d.Parse(json.c_str()); 
    assert(d.IsObject()); 
    assert(d.HasMember("id_str")); 
    assert(d.HasMember("name")); 
    assert(d.HasMember("screen_name")); 
    assert(d["name"].IsString()); 
    assert(d["screen_name"].IsString()); 
    assert(d["id_str"].IsString()); 
    set_user_ID(d["id_str"].GetString()); 
    set_name(d["name"].GetString()); 
    set_screenName(d["screen_name"].GetString()); 


} 
user::~user() 
{ 

} 

ve benim ana

#include<string> 
#include<iostream> 
#include "twitcurl.h" 
#include "curl/curl.h" 
#include"classes.h" 

FILE _iob[] = { *stdin, *stdout, *stderr }; 

extern "C" FILE * __cdecl __iob_func(void) 
{ 
    return _iob; 
} 



int main(int argc, char *argv[]) 
{ 


    ///first screen login or exit 

    std::string choice; 
    std::cout << "Press" << std::endl << "1 to login" << std::endl << "2 to exit" << std::endl; 
    std::cin >> choice; 
    int intChoice = std::stoi(choice, nullptr); 
    if (intChoice == 0) 
    { 
     return 0; 

    } 
    else if (intChoice == 1) 


    { 
     /*choice = ""; 
     intChoice = 0;*/ 
     std::string userName = "Jordash90"; 
     std::string passWord = "*******"; 
     /*std::cout << "Please enter your twitter username->" << std::endl; 
     std::cin >> userName; 
     std::cout << "Please enter your twitter password->" << std::endl; 
     std::cin >> passWord;*/ 

     twitCurl twitterObj; 
     std::string tmpStr, tmpStr2; 
     std::string replyMsg; 
     char tmpBuf[1024]; 

     /* Set twitter username and password */ 
     twitterObj.setTwitterUsername(userName); 
     twitterObj.setTwitterPassword(passWord); 

     //SETMYKEYS AND SECRET OAUTHSTUFF 
     twitterObj.getOAuth().setConsumerKey(std::string("bHnCXjV*************47Jk")); 
     twitterObj.getOAuth().setConsumerSecret(std::string("fmjE*********VrzK7JoZWg28NECB0Eu5xsAQxXbOYdjjA")); 

     // 
     std::string oAuthUrl; 
     twitterObj.oAuthRequestToken(oAuthUrl); 
     twitterObj.oAuthHandlePIN(oAuthUrl); 

     twitterObj.oAuthAccessToken(); 

     std::string myAccessTokenKey; 
     std::string myAccessTokenSecret; 
     twitterObj.getOAuth().getOAuthTokenKey(myAccessTokenKey); 
     twitterObj.getOAuth().getOAuthTokenSecret(myAccessTokenSecret); 
     //save these for later 
     std::ofstream tokenKeySave; 
     std::ofstream tokenSecretSave; 
     tokenKeySave.open("twitterClient_token_key.txt"); 
     tokenSecretSave.open("twitterClient_token_secret.txt"); 

     tokenKeySave.clear(); 
     tokenSecretSave.clear(); 

     tokenKeySave << myAccessTokenKey.c_str(); 
     tokenSecretSave << myAccessTokenSecret.c_str(); 

     tokenKeySave.close(); 
     tokenSecretSave.close(); 

     /////actually trying to do something with this 

     user currentUser; 
     /* Account credentials verification */ 
     if (twitterObj.accountVerifyCredGet()) 
     { 
      twitterObj.getLastWebResponse(replyMsg); 

      currentUser.loadUserData(replyMsg); 


      std::cout << "User name: " << currentUser.get_name() << std::endl; 
      std::cout << "User ID: " << currentUser.get_user_ID() << std::endl; 
      std::cout << "User screen name: " << currentUser.get_screenName() << std::endl; 
      std::cout << "login successful! :) " << std::endl; 
     } 
     else 
     { 
      twitterObj.getLastCurlError(replyMsg); 
      printf("\ntwitterClient:: twitCurl::accountVerifyCredGet error:\n%s\n", replyMsg.c_str()); 
     } 
    } 

    system("PAUSE"); 


    return 0; 

}; 
+0

Bu, bir yerde belleği yitirmiş olduğunuz anlamına gelir. Çok şüpheli 'FILE _iob [] = {* stdin, * stdout, * stderr};'. 'FILE' nesneleri kopyalanamaz. Dahili fonksiyonun yeniden tanımlanması '__iob_func' de sorun yaratıyor. –

+0

Sorunu yeniden oluşturacak kodunuzun mümkün olan en küçük şekli bu mu? Sorunu tekrarlamak için hangi girdileri kullanıyorsunuz? –

+0

@RaymondChen _iob bölümü kütüphane almak için gerekliydi çünkü oldukça eski ve başlangıçta vs06 ya da bir şey üzerinde kullanılan görsel stüdyosu 2015 üzerinde çalışıyor. Bir süre alacak libcurl ve twitcurl oluşturmazsanız, hatayı yeniden üretemezsiniz. merak ediyorum, bu hata, kullanıcı sınıfımın bir zaman çizelgesi örneğine sahip olduğu ve zaman çizelgesi sınıfımın bir tweets vektörü olduğuyla ilgili herhangi bir şekilde olabilir mi? Bu sadece ikinci iki sınıfı koduma eklediğimde mutlu oldu. – J0rdy

cevap

0

konu beni zaman tweet sınıf halkı ilan etmiyoruz kaynaklandığını satır sınıfı.

+0

Bu mantıklı değil. Bu, bir çalışma zamanı hatası değil, bir derleme zamanı hatasıyla sonuçlanırdı.Ayrıca, kaydettiğiniz kodda, 'tweet' sınıfı zaten tamamen kamuya açık. –

+0

hala sabittir. – J0rdy

+0

O zaman belki de "tweet sınıfını zaman çizelgesi sınıfına bildirmekle" ne demek istediğini anlamıyorum. Tweet sınıfı ve zaman çizelgesi sınıfı kardeşlerdir, bu yüzden birbirlerini kamuya "değil" ederler. Onlar mutlak anlamda sadece kamusaldırlar. Sorunu çözmek için lütfen değiştirilen gerçek kod satırını paylaşın. –