| | |
Debug assertion failed
Please support our C++ advertiser: Intel Parallel Studio Home
![]() |
•
•
Join Date: Jun 2008
Posts: 35
Reputation:
Solved Threads: 0
Hi all,
I got this assertion problem that i cant seem to solve, could you guys help me on this. So far, i think the problem might be due to the while loop for the iterator line by line check and i have made changes to it but still cant solve it.
Debug assertion failed
file:f\dd\vctools\crt_bld\self_x86\crt\src\dbgheap.c
Line: 1317
Expression: _CrtIsValidHeappointer(pUserData)
file:f\dd\vctools\crt_bld\self_x86\crt\src\dbgheap.c
Line: 1419
Expression: _pFirstBlock == pHead
I got this assertion problem that i cant seem to solve, could you guys help me on this. So far, i think the problem might be due to the while loop for the iterator line by line check and i have made changes to it but still cant solve it.
Debug assertion failed
file:f\dd\vctools\crt_bld\self_x86\crt\src\dbgheap.c
Line: 1317
Expression: _CrtIsValidHeappointer(pUserData)
file:f\dd\vctools\crt_bld\self_x86\crt\src\dbgheap.c
Line: 1419
Expression: _pFirstBlock == pHead
private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e)
{
ifstream ckin("sample.txt");
int initclock = 0;
if (ckin==NULL)
{
MessageBox::Show ("not found");
ckin.close();
initclock++;
}
if (ckin!=NULL)
{
char checkEmpty;
ckin.get(checkEmpty);
if (!ckin.eof())
{textBox1->Text = "file empty";
ckin.close();
}
else
{textBox1->Text = "not empty";
ckin.close();
initclock++;
}
}
ifstream in("sample.txt");
string line;
string match("sample\:");
int clock = 0 ;
while (getline(in, line)&&(initclock==0))
{
stringstream sstrm(line);
string::iterator iter =
search (line.begin(),line.end(),match.begin(),match.end());
if (iter != line.end() )
{
iter = find_if( iter +match.length(), line.end(),not1(ptr_fun <int,int> (isspace)));
if (iter == line.end())
{
MessageBox::Show ("No numbers or words after Serial no. :");
break;
}
string::iterator j = find_if (iter, line.end(), ptr_fun <int,int> (isspace));
string found;
copy(iter, j, back_insert_iterator <string> (found));
//create a new file based on the word after said word
//and saved it into the said folder
string filename = found + ".txt";
string dirname = "log//";
string finaldir = dirname + filename;
ofstream(finaldir.c_str());
//using ifstream and ofstream to copy content of file to another
char * fbuffer;
long fsize;
ifstream cpy ("sample.txt",ios::binary);
ofstream target (finaldir.c_str(),ios::binary);
cpy.seekg(0,ifstream::end);
fsize=cpy.tellg();
cpy.seekg(0);
fbuffer = new char [fsize];
cpy.read (fbuffer,fsize);
target.write (fbuffer,fsize);
delete[] fbuffer;
cpy.close();
target.close();
//write the found word/serial no. into temp.txt
const char * buffer=found.c_str();
string str (found.c_str());
int sizeNum = str.length();
long size = sizeNum;
ofstream outfile ("store.txt");
outfile.write (buffer,size);
//delete[] buffer;//release dynamically allocated memory
outfile.close ();
//textbox update and check if previous saved name is the same as
//current one
textBox2->Text = System::IO::File::ReadAllText("store.txt");
if (textBox2->Text == label3->Text) {
MessageBox::Show ("no. repeated");
}
else
{
label3->Text = textBox2->Text;
}
//try to use an empty file to write and empty a file
//which is being used by another program
char * ebuffer;
long esize;
ifstream ecpy ("void.txt",ios::binary);
ofstream etarget ("sample.txt",ios::binary);
ecpy.seekg(0,ifstream::end);
esize=ecpy.tellg();
ecpy.seekg(0);
ebuffer = new char [esize];
ecpy.read (ebuffer,esize);
etarget.write (ebuffer,esize);
delete[] ebuffer;
ecpy.close();
etarget.close();
textBox1->Text = "done";
clock++;
in.close();
if (clock!=0)
break;
}//if iter
else
{
textBox1->Text = "not found";
}
}//while
} You've trashed your allocated memory pool.
Unfortunately, the code you've posted is probably OK (if you've been staring at it for that long without solving the problem).
The thing of it is, where the fault occurred (the real code you need to fix) is seldom the same as the code which notices there's a problem (the code you posted). It's this remoteness of "cause" and "effect" which really takes the time in solving these kinds of problems.
The fact that your code hasn't crashed up to now just makes you lucky, not good.
What you do about it now however is harder to say.
You could look at the MALLOC_DBG options, and cause it to call the pool-checking functions on every alloc/free call. This will slow it down, but it will notice the problem a lot sooner.
Unfortunately, the code you've posted is probably OK (if you've been staring at it for that long without solving the problem).
The thing of it is, where the fault occurred (the real code you need to fix) is seldom the same as the code which notices there's a problem (the code you posted). It's this remoteness of "cause" and "effect" which really takes the time in solving these kinds of problems.
The fact that your code hasn't crashed up to now just makes you lucky, not good.
What you do about it now however is harder to say.
You could look at the MALLOC_DBG options, and cause it to call the pool-checking functions on every alloc/free call. This will slow it down, but it will notice the problem a lot sooner.
•
•
Join Date: Jun 2008
Posts: 35
Reputation:
Solved Threads: 0
The weird part is that it had no problem compiling and executing in any com with vc++ 2008 express edition.
Initially, it could not even be executed in com without vc++ express installed, come with error saying->"application failed to start because application configuration is incorrect. reinstalling the application may fixed the problem".
I did followed msdn example of copying the msvcr, msvcm, msvcp.dll and a manifest file into the same folder as the .exe file for those com which dont have vc++ express installed.
Then it was able to execute but disappointingly come with the above mentioned error which i cant seem to solve.
Current changes are those ifstream i had changed to fstream but still cant solve it.
Can someone kind enough to spare some time on this and give me some advices, pointers or any link that can assist me.
Thanks in advance.
Initially, it could not even be executed in com without vc++ express installed, come with error saying->"application failed to start because application configuration is incorrect. reinstalling the application may fixed the problem".
I did followed msdn example of copying the msvcr, msvcm, msvcp.dll and a manifest file into the same folder as the .exe file for those com which dont have vc++ express installed.
Then it was able to execute but disappointingly come with the above mentioned error which i cant seem to solve.
Current changes are those ifstream i had changed to fstream but still cant solve it.
Can someone kind enough to spare some time on this and give me some advices, pointers or any link that can assist me.
Thanks in advance.
•
•
Join Date: Jun 2008
Posts: 8
Reputation:
Solved Threads: 2
On the folder "C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\BootStrapper\Packages\vcredist_x86" on the PC with installed Visual Studio 8 placed the file "vcredist_x86.exe" (for VS 2008 installation there are similar redistributable package). Sometimes running this installer on the machine without installed development environment can bring better results than copying the required MFC and CRT dlls to the system PATH of that computer.
•
•
Join Date: Jun 2008
Posts: 35
Reputation:
Solved Threads: 0
•
•
•
•
On the folder "C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\BootStrapper\Packages\vcredist_x86" on the PC with installed Visual Studio 8 placed the file "vcredist_x86.exe" (for VS 2008 installation there are similar redistributable package). Sometimes running this installer on the machine without installed development environment can bring better results than copying the required MFC and CRT dlls to the system PATH of that computer.
I have tried installing the vcredist_x86 on target com with no Microsoft Visual studio but it cant even be executed. after pasting the dlls then it can be executed.
during debugging, after i exited my program i saw red wording in the stack frame: xxx.exe!main(array<system::string^>^args={Length=0})Line 17.
Anyone know what causes this? or is this the cause to my assertion failed?
int main(array<System::String ^> ^args)
{
// Enabling Windows XP visual effects before any controls are created
Application::EnableVisualStyles();
Application::SetCompatibleTextRenderingDefault(false);
15. // Create the main window and run it
16. Application::Run(gcnew Form1());
17. return 0;
18. }•
•
Join Date: Jun 2008
Posts: 35
Reputation:
Solved Threads: 0
•
•
•
•
Brian MuthMVP
You should be aware that you cannot legally redistribute the msXXXd.dll's in this manner. They are not redistributable.
To deploy a c++ application properly you should read the following material:
How to Deploy C++ Properly
Deployment (C++)
How to redistribute the Visual C++ Libraries with your application
Windows Installer
Deploying .NET Framework Applications
Im glad that the problem is not due to my code but because vc++ express is free so it has its limitation. Sad and angry that i spent quite a considerable amount of time on it which seem is fruitless.
![]() |
Similar Threads
- Assertion Failed (C++)
- Debug Assertion Failure (Web Browsers)
- Assertion Failure? (C++)
- File operations (C)
- MFC Listener (C)
- Debug Assertion Failed (Troubleshooting Dead Machines)
- Deleting a pointer? (C++)
Other Threads in the C++ Forum
- Previous Thread: error C2446: '==' : no conversion from 'int' to 'char *'
- Next Thread: C++ Graphs
| Thread Tools | Search this Thread |
api array based binary c++ c/c++ calculator char char* class classes code coding compile console conversion count database delete deploy desktop developer directshow dll download dynamic dynamiccharacterarray email encryption error file forms fstream function functions game givemetehcodez google graph gui homeworkhelp iamthwee ifstream input int integer java lib linkedlist linker linux list loop looping loops map math matrix memory multiple news number numbertoword output pointer problem program programming project python random read recursion recursive reference return rpg sorting string strings struct temperature template templates test text text-file tree unix url variable vector video visual visualstudio win32 windows winsock wordfrequency wxwidgets






