im not sure, but try add add System("PAUSE");
but you did not add "Clearmem" & Pause into your main functions, try to add that.
im not a pro, dont be angry if its uncorrect, i just try
I wrote some code and so far all it should do is allocate memory and then free it up however if I try to allocate A LOT of memory it doesn't throw an error instead it just locks up....
Now the program will accept 999999999 and throw the error I coded in but if you try adding 1 more 9 so there are 10 digits it freezes up and does not throw an error. The last message on the screen when it freezes is
"Allocating memory for operation, please wait..."
So I would think it literally freezes outside of my code in one of the defines?
Code:#include "stdafx.h" #include <iostream> #include <sstream> #include <string> #include <new> using namespace std; int* makelist (int a) { cout << "Initializing memory for operation, please wait... \n"; int * lenghth; lenghth = new (nothrow) int [a]; if (lenghth == 0) { cout << "ERROR ALLOCATING MEMORY!\n"; return 0; } cout << "Done!\n"; return(lenghth); } void clearmem (int * addy, int lenghth) { cout << "Freeing memory please wait...\n"; delete[lenghth] addy; cout << "Done!"; } void pause() { cin.ignore(); cin.get(); } int main() { int a; int a_const; int * list_location; cout << "Enter the number of numbers you want to find in the Fibonaci sequence.\n"; cin >> a; a_const = a; if (a == 0) { cout << "Ummmm so you started this program to not use it.... im not going\nto calculate the 0th number -.-\npress enter to close..."; pause(); return 0; } list_location = makelist (a); clearmem(list_location, a_const); pause(); return 0; }
im not sure, but try add add System("PAUSE");
but you did not add "Clearmem" & Pause into your main functions, try to add that.
im not a pro, dont be angry if its uncorrect, i just try
Im not sure what your saying exactly but I do hoave the two functions used in main I know that it freezes in the makelist function and I tried to avoid using System("pause") because I want to keep it as easy to compile on multiple platforms as possible. Please do elaborate if I misunderstood and ANY help is welcome
EDIT: I tried to throw in a pause directly after the cout command that displays the last text on screen and strangely it skips this pause command and any other pause I put in anywhere be it the pause function I wrote or system("pause")
Last edited by hobosrock696; 09-03-2010 at 03:35 AM.
Bump, dont want to start a new thread :/ sorry
this is a guess...
INT_MIN
Minimum value for a variable of type int.
–2147483648
INT_MAX
Maximum value for a variable of type int.
2147483647
999999999 is smaller than int max
9999999999 is larger than int max and give an error.
try the values 214783647 and 214783648
if I'm right the last one gives an error.
is it bigger than or bigger then?
why06 (09-09-2010)
See theres the funny thing... neither give an error.... both freeze so what Im going to try is getting an input as a string and pulling the number out into a variable.... Will post back and thanks for the attempt anything it welcome
EDIT: So it turns out that using stringstream(stringvar) >> integervar DOES NOT help.... hmm... time to get sidetracked and write code to check for integers in a string.....
EDIT 2: So even at 1 billion it throws an error but at a certain point it just freaks and freezes..... Otherwise it will throw an error.... anyone ever done this? allowed the user to allocate a bunch of memory based on a number they put in? Im definitely missing something....
Last edited by hobosrock696; 09-04-2010 at 03:04 AM.
Bump..... I'm seeing this problem with tutorial code too.... When you try to allocate too much memory it just freezes....
I learned from cplusplus website tutorial section on dynamic memory...
Compile the below code and tell it you want to enter 1000000000 numbers and it will error out but tell it you want to enter 99999999999 and it will just freeze. Im using vs 2008
The folowing code IS NOT MINE [cplusplus.com]
Im thinking this has to do with a 2gb limit on 32 bit executables no?Code:// rememb-o-matic #include <iostream> #include <new> using namespace std; int main () { int i,n; int * p; cout << "How many numbers would you like to type? "; cin >> i; p= new (nothrow) int[i]; if (p == 0) cout << "Error: memory could not be allocated"; else { for (n=0; n<i; n++) { cout << "Enter number: "; cin >> p[n]; } cout << "You have entered: "; for (n=0; n<i; n++) cout << p[n] << ", "; delete[] p; } return 0; }
Last edited by hobosrock696; 09-09-2010 at 02:58 PM.
why06 (09-09-2010)
Hmmm well i have tried to do so but even numbers that should fit in an integer don't work. Perhaps this could be resolved faster if i posted a link to an executable with all those virus scans that are required so you have the compiled program to see how it behaves?