|
SRKSHOME wrote: test1->(new test(20));
That is because you are doing memory allocation with new, and you have no way of deleting the pointer to that memory location, since you don't have a variable to delete. Try using a pointer variable and then you can free the memory it points to
Somethings seem HARD to do, until we know how to do them.
_AnShUmAn_
|
|
|
|
|
There are two bugs in this program:
1. test1->(new test(20)); // This is incorrect. Perhaps you mean test1->display(new test(20));
2. You are using test1 without allocating memory for it.
You can try something like this:
test* test1 = new test;
test* test2 = new test;
test1->display(test2);
delete test1;
delete test2;
Or
test test1;<br />
test test2;<br />
test1.display(&test2);
-Saurabh
|
|
|
|
|
Hi All
I am new in vc++.I have a problem to get length of array.Plz help me
|
|
|
|
|
|
Thanks for reply but it's not working
i have a CString store[100];,CString File; and int cou=0;. And i use store[cou]=File. And i want to get Size of store[cou].Plz help me
|
|
|
|
|
|
CArray or user defined array??
"Opinions are neither right nor wrong. I cannot change your opinion. I can, however, change what influences your opinion." - David Crow Never mind - my own stupidity is the source of every "problem" - Mixture
cheers,
Alok Gupta
VC Forum Q&A :- I/ IV
Support CRY- Child Relief and You/xml>
|
|
|
|
|
|
do you want the size of the array in bytes, or the number of elements in the array?
if you want the size in bytes, use the sizeof() like so;
int size_in_bytes;
int theArray[20];
size_in_bytes = sizeof(theArray);
|
|
|
|
|
Hi,
Dont use user defined array in this case. You better use CStringArray.
Then you no need to calculate the size of the array. This class is having a member function int GetSize() to get the size of the array.
The price of anything is the amount of life you exchange for it.
Thanks and Regards.
SANTHOSH V
|
|
|
|
|
please read at first the docs about the used obejcts carefully. Often there are tiny little helper as .length or .GetLength to solve such problems. (And use the search box in top of this site a lot)
Greetings from Germany
|
|
|
|
|
What kind of array are you using? Could you please post array declaration?
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong.
-- Iain Clarke
[My articles]
|
|
|
|
|
|
The size of such array is
int iSize = sizeof(store);
The number of elements of such array is
int iCount = sizeof(store)/sizeof(store[0]);
or, more concisely, 100 .
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong.
-- Iain Clarke
[My articles]
|
|
|
|
|
Thanks for reply but it's not working.
CString store[100];
CString File;
and int cou=0;
store[cou]=File.
File name added at the run time.Plz help me
|
|
|
|
|
What does it mean 'it's not working?' in such context?
What are you trying to do?
What happens instead?
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong.
-- Iain Clarke
[My articles]
|
|
|
|
|
store[cou]=File;
int iSize=sizeof(store);
AfxMessageBox(iSize);
Then i am geting Debug Assertion Fail Line number:163.
|
|
|
|
|
On what line does the code assert?
BTW your array is fixed-sized to 100 elements, regardless if you assign or not any of them.
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong.
-- Iain Clarke
[My articles]
|
|
|
|
|
Thank Now it is working.Your code is good.I make a mistake.SO thanks again.Ome more question how can i use dynamic array.Plz help me
|
|
|
|
|
If you need an array that grows dynamically then have a look at std::vector .
MFC has the CArray container but it's a crap (please don't tell this to Rajesh ).
very basic (and naive) vector usage sample follows:
#include <iostream>
#include <string>
#include <vector>
using namespace std;
void main()
{
vector < string > v;
v.push_back(string("hi,"));
v.push_back(string("how"));
v.push_back(string("do you do?"));
cout << "vector size = " << v.size() << endl;
for (int i=0; i<v.size(); i++)
{
cout << v[i] << " ";
}
cout << endl;
}
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong.
-- Iain Clarke
[My articles]
|
|
|
|
|
Thanks for help.Every reply boost me..
|
|
|
|
|
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong.
-- Iain Clarke
[My articles]
|
|
|
|
|
In one of my projects I have an array of pointers to Tile 's (a class of my own) within a Block class. Upon calling the constructor for the Block class I assign the pointer to each Tile in the array to the address of a Tile created on the heap using the new operator like so;
Block::Block()
{
while(i=0; i < 20; i++)
{
Array_of_pointers_to_Tiles[i] = new Tile;
}
}
I then call the delete operator in the destructor like so;
Block::~Block()
{
while(i=0; i < 20; i++)
{
delete Array_of_pointers_to_Tiles[i];
Array_of_pointers_to_Tiles[i] = NULL;
}
}
This code does not compile.
According to this resource[^] I am to allocate the array like so;
int* a = NULL;
int n;
cin >> n;
a = new int[n];
for (int i=0; i<n; i++) {
a[i] = 0;
}
. . .
delete [] a;
a = NULL;
and to free the memory allocated to the array;
delete [] a;
a = NULL;
However this code doesn't compile either!
What is the correct way?!?
modified on Monday, September 29, 2008 1:44 AM
|
|
|
|
|
Can you tell what is the compiler error?
Saurabh
|
|
|
|
|
As soon as I get home, yes
I'm at work
|
|
|
|