xmemory0の909行に問題があると、プログラムの実際の終了まで、自分のコードがビルドされ、正常に実行されます。私は私のクラスを構築し始めたときxmemory0 exception in void deallocate
void deallocate(pointer _Ptr, size_type _Count)
{ // deallocate object at _Ptr, ignore size
_Mybase::deallocate(_Ptr, _Count);
}
私のコードは非常に基本的なTwitterクライアントの開始で、問題は、実際に発生しました。私は99%が私のベクトルと関係があると確信していますが、私は本当にまだそれで何もしていないので、わかりません。このエラーをオンラインで検索すると、同様の問題が見つかりません。私がtwitcurlライブラリを使用しているので、コードをコンパイルするためにすべてをビルドするように誰にも依頼するのは本当に難しくて不公平ですが、ここでは私が持っているものを見ることができます これはすべて私のクラスのヘッダファイルです
#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*/
私の実装ファイル
#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()
{
}
と私のメイン
#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;
};
これは、どこかでメモリが破損したことを意味します。非常に疑わしいのは 'FILE _iob [] = {* stdin、* stdout、* stderr};'です。 'FILE'オブジェクトはコピーできません。内部関数 '__iob_func'を再定義することも問題を求めています。 –
これは問題を再現する可能な限り小さなコードですか?問題を再現するためにどのようなインプットを使用していますか? –
@RaymondChenファイル_iobは、ビジュアルスタジオ2015で作業することを使用してライブラリimを取得するために必要です。これはかなり古く、最初はvs06などで使用されていました。 libcurlとtwitcurlをビルドしないとエラーを再現することはできません。私のユーザクラスにタイムラインのインスタンスがあり、タイムラインクラスがつぶやきのベクトルであるという事実に、このエラーが何らかの形で関連している可能性があるのであれば、私は疑問に思います。これは後半の2つのクラスを自分のコードに導入したときに始まりました。 – J0rdy