C/C++ :: Dynamically Allocating Array Passed As Parameter

Apr 18, 2015

I'm trying to dynamically allocate a standard array at runtime in the function of a class where the array is "owned" by the calling class. The calling class knows nothing about the array before it makes the call to create the array other than the datatype of the array. But the full array of data needs to be returned.

It appears that the pointer being passed makes a copy of the pointer on the stack and then when the function returns it pops it off the stack and the array is a memory leak because the pointer is once again a nullptr as it was before being passed and the array has not been deallocated with delete yet (as it should not have been).

(Edit:Unexpected value of MyArray being a nullptr instead of pointing to an array after returning from line 09.)

class Class1 {
void FunctionA() {
Class2 OwnedClass;
int* MyArray = nullptr;
int SizeOfMyArray = 0;

[Code] ....

View 14 Replies


ADVERTISEMENT

C++ :: Dynamically Allocating Multidimensional Array?

Nov 24, 2013

Working on this one from the Jumping into c++ book. The book asks that I create a multidimensional array at run time based on user input and fill it with a multiplication table

My code compiles fine but throws an uninitiated error for p when I try and run it.

Code:
void multiDimentionalMultiplication(int x, int y, int z){
int ***p;
**p = new int[x];
std::cout << "Allocating array.

[code]....

View 8 Replies View Related

C++ :: Dynamically Allocating One Dimension Of 3D Array?

Jun 14, 2013

I am trying to figure out the syntax to dynamically allocate a single dimension of a triple dimensional array. Basically i have a 2D array of structs. but each struct is an array (basically rows of the information). The rows of this structure need to be allocated dynamically, but the height and width of the overarching structure are static.

Basically: Struct * ts_FieldInfo[100][100] = new Struct[Class.returndataitems()];

View 2 Replies View Related

C/C++ :: Dynamically Allocating Pointer Array

Apr 15, 2014

so I have this code that dynamically allocates a pointer array increasing and removing elements of the array as its operated on.then it sorts and prints out the array when the user is finished operation on the array. i get this error message when running the program though.

"Unhandled exception at 0x0F474F98 (msvcr110d.dll) in Lab10_VarArray.exe: 0xC0000005: Access violation reading location 0xCCCCCCC0."

this is my code

#include <iostream>
#include <cstdlib>
#include "Header.h"
using std::cout; using std::endl; using std::cin;
int main(void) {
char op='x';

[Code]...

View 3 Replies View Related

C :: Segmentation Fault When Dynamically Allocating 2D Array

Apr 20, 2013

This is a homework assignment where I have to read a file into a dynamically allocated 2d array. The file format is
10
Jim 3.6
Jake 4.0
Will 3.0
Sara 3.4
Mike 2.5
Ellen 2.9
Melissa 3.9
Eric 3.8
John 3.5
Beth 3.9

where 10 is the number of students followed by the students and the gpa's. There is more to the program but I have not implemented it yet because I am getting a segmentation fault. The output I am getting when I print the array is
Jim 3.6
Jake 4.0
Will 3.0
Sara 3.4
Segmentation fault

I can see where the problem lies. If I raise value for row when I am allocating the rows of the array, all of the names print. I just do not see why I need to. From my understanding the row * sizeof(char*) should give me enough room for 10 entrie.

Code:
#include <stdio.h>
#include <stdlib.h>
void sort();
int main()

[Code] .....

View 6 Replies View Related

C++ :: Allocating Array Of Pointers To Dynamically Allocated Array?

Jan 18, 2014

I'm trying extremely hard to understand pointers and I have the basic concept down.. I feel as though my knowledge of dynamically allocated pointers and pointers in general is not enough to understand the logic behind what I'm trying to do. The problem is that the donations array must be able to accept any number of donations. I've made it do just that, but there is also an array of pointers which must each point to the same element in the donations array. The program works if I assign int *arrPtr[100] for example, but it does not work if I try to dynamically allocate it to accept the same number of elements for donations entered by the user. Here it's the snippet

#include <iostream>
using namespace std;
//Function Prototypes

[Code]....

View 2 Replies View Related

C :: Dynamically Allocating Memory?

Sep 18, 2013

I have created a database for music cds:

Code:

#include<stdio.h>
#include<stdlib.h>
#define array
typedef struct cd_database

[Code]....

When I am using malloc instead of arrays the code is not working properly after exit. I have tried alot but can't came up with a way

View 5 Replies View Related

C++ :: Dynamically Allocating Hash Table Using Data From File

Nov 5, 2013

I have an abstract based class and three derived classes. I also have a templated hash table class(using chaining as my collision resolution method, an array of stl lists), and a class to parse commands from a file, this also holds the instantiation of the hash table. My question is that since my command parsing class's constructor instantiates the hash table in the main driver(unable to modify) how can I make this dynamically allocated using data from the file?

template<class T>
class hashTable{
public:
hashTable(int size);
~hashTable();

[Code] .....

View 3 Replies View Related

Visual C++ :: Local Variable Be Passed As Parameter Into A New Thread?

Apr 1, 2013

Can local variable be passed as the parameter for a new created thread procedure? Here is the example code:

Code:
void CDLG::some_function()
{
CString strFileName="abc.doc";
//local variable, can it be valid for being passed into the following new thread???
//Can strFileName still be accessed from within the stack of thread procedure?
::AfxBeginThread(ProcessContentThread,(LPVOID)&strFileName);
}

[Code]...

There is another method using variable on the heap,

Code:

void CDLG::some_function()
{
CString strFileName="abc.doc";
CString* pstrFN=new CString(strFileName);
::AfxBeginThread(ProcessContentThread,(LPVOID)pstrFN);
}

[Code]...

I test these code, both methods work as expected, but I doubt whether the first method is a good way. OR if only the second method is the correct way to pass a parameter to a thread.

View 12 Replies View Related

C++ :: Linked List Node Passed As Parameter / Argument Pointer To Pointer Notation

Jan 17, 2014

I was having problems changing the value of my head node I passed it as an argument as head which would be the address. The parameter was defined as struct node *head. like this

bool deleteNode(struct node *head, struct node *delptr)

I tried manipultaing pointer values to change head node value but it did not work. I saw some code online which used pointer to pointers(in code below) to change head node value it worked I dont fully understand why. Would like better understanding of why.

Would also like to know why the argument call needed &head instead of just head.

remove = deleteNode(&head,found); opposed to remove = deleteNode(head,found);

#include "stdafx.h"
#include<iostream>
struct node{

[Code].....

View 1 Replies View Related

C :: Allocating Memory To Array Of Struct?

Sep 9, 2013

Do you have to allocate memory(malloc) for an array of structs? Example:

Code:
typedef struct{
char * name;
}First;
struct name{
First fname;
};
struct name Names[10];

View 7 Replies View Related

C++ :: Allocating Number Of Element On Array

Mar 7, 2013

#include <iostream>
using namespace std;
int main() {
int elm = 0;
int size = 0;
int *array;

[Code] ....

View 6 Replies View Related

C/C++ :: Allocating Memory For 2D Array In Other Class?

Jun 10, 2014

I'm making some multi-threaded program, but thats not my problem as i've done that already. I have a class with user-functions containing a structure which then contains a two dimensional array for each user with 25 elements. So I dont want to limit the user and make the array for example with just 10 rows, but allocate the needed memory to match the amount of 'users' a potential user of my program would want. The problem is, that i know how i should allocate it using 'new int' but it just doesnt work ! It gives an error:

Error: no operator "=" matches these operands

UserStuff.h:
struct userDataStruct {
bool* isAdmin;

[Code]...

Then, in some completely other class function inside the file mentioned above: (I know i could do a function in CUsers class which could allocate the memory, but I have this function which is used for some other things and it already has the amount of max users

void OtherClass::somefunction(maxusers)
{
// This gives an error: Error: no operator "=" matches these operands
curUsers->uData.userNumbers = new int*[maxusers]; //maxusers is the int variable of max users specified by the client
// However this doesn't
for( int i = 0 ; i < maxusers ; i++ )
curUsers->uData.userNumbers[i] = new int[25]; // 25 columns, this doesnt give any error
}

I'm not really sure what I'm doing wrong. Doing this in some function from CUsers class works (without curUsers-> or with, doesn't give any error) but doing it from some other class's function doesnt.

View 11 Replies View Related

C++ :: Allocating Memory For Vectorized 2D Array?

Mar 2, 2015

I want to be able to dynamically allocate and index an array like the following: vv2d[1][2].x and vv2d[1][2].y. In order to accomplish that I have chosen to use a std::vector of a std::vector of a 2D point class.

Code:
/// Here is my templated version of a 2d point class which I have adopted from
/// one by Alexander Chernosvitov, Function Graphics, 2001 (see ogview.h)
/// http://www.codeguru.com/cpp/g-m/opengl/article.php/c5581/Function-graphics-in-3D.htm
template <typename T>

[Code]....

Boundary violation occurs as soon as vv2d[1][0].x is encountered. I believe the problem is my inability to dynamically allocate the size of the (primary) typedef vector. However, eliminating the typedef for the following does not change the result. Further examination shows the vv2d[1][0] size and capacity to be 0.

Code:
vector<vector<CPoint2D<double>>> vv2d;
vv2d.resize(3);
vv2d[0].resize(3);

View 14 Replies View Related

C++ :: Object That Is Passed To Function Is Changed Although No Pointer Is Passed

Mar 22, 2013

I am posting this simplified piece of code that is a bit confusing for me. There are two functions that I call. One shows the expected results but the result of the other one rather puzzles me.

//#define defineVecTyp Vec3f
#define defineVecTyp float
template <typename vecTyp>
vecTyp buildLaplacianPyramid(cv::Mat inputmat) {
vecTyp lapPyr;

[Code].....

Calling the function sum1 does not change the values stored in the variables val1 and val2. The output of the program is as follows:

val1= 1 ## val2= 10 // before the call of function sum1
val1= 1 ## val2= 10 // after the call of function sum1
sumOfVals= 22

This is quite obvious and as expected and I just pasted this piece of code as an example for better clarification.

However, if I call the function buildLaplacianPyramid and apply a function for Gaussian Blurring, this also effects the cv::Mat passed to the function. The line imshow("M1, after buildLaplacianPyramid",M1); therefore shows an image that is blurred. Since I am not passing a pointer to the cv::Mat I do not understand why this should be happening. I was assuming that there would be a copy of the cv::Mat M1 to be used within the function. Therefore I was expecting the cv::Mat M1 to retain its original value. I was expecting that all changes applied to cv::Mat inputmat within the function would not have any influence on the cv::Mat M1. Just like in my other example with the sum.

View 3 Replies View Related

C :: Allocating And Freeing Memory For Array Of Structures

Jul 27, 2014

I have to allocate memory for an array of structures, and my structure looks as following:

Code:
typedef struct {
char *name;
Uint *start_pos;
Uint len;
}
example_struct;

And now I want to allocate memory, for a variable number (so an array) of example_struct, so I first do:
Code:

example struct *all_struct;
int total_num = 3;
//will be set somehow, but for the example I set it on 3 all_struct = malloc (sizeof(example_struct) * total_num);

And now, as far as I now, I will have to allocate for each field of the structure memory, in order to be able to use it later. But I have problem at this point, a problem of understanding:

- I just allocated memory for 3 structures, but don't I have to allocate then memory for each structure separately, or can I just now allocate the fields like this:

Code: all_struct[0].name = malloc.....

But if yes, why the hell this works...

View 10 Replies View Related

C/C++ :: Find Average Of 10 Numbers Passed To Array Using Function?

Jun 20, 2012

find the average of 10 numbers to an array using function .the array should be controlled by while loop?

#include <iostream.h>
float sum(float x[],int size);
    main() {
   float a[10];
int n=10;

[Code] .....

View 2 Replies View Related

C++ :: Convert Passed String Into Proper Alpha Case And Sort Array Of Names

Apr 25, 2013

I want to create 2 functions to (1) convert a passed string into proper case (capitalize the first alpha character of a string and every alpha character that follows a non-alpha character); (2) sort the array of names (after it has been converted to proper case).

I tried these two:

console.writeline (lower.toUpper());
void bubblesort (string array[],int length);

but I don't know if they are good.

View 2 Replies View Related

C++ :: Dynamically Expanding Array

May 28, 2013

Consider the following:

Code:
int *p;
p = new int[5];
for(int i=0;i<5;i++)
*(p+i)=i;

Now suppose we want to add a 6th element (without using vector)

One way is to copy it across to a larger array:

Code:
int *p;
p = new int[5];
for(int i=0;i<5;i++)
*(p+i)=i;

// realloc
int* temp = new int[6];
std::copy(p, p + 5, temp);
delete [] p;
p = temp;

This looks like a very expensive operation and im looking for other ways.

Three questions regarding the above: Not using vector, is this the best way to do this?What about using realloc? How would I use realloc in this situation?Any other ways apart from realloc or vector?

View 1 Replies View Related

C++ :: Dynamically Realloc 2D Array

Dec 18, 2014

I would like to realloc a 2D array. I have a counter, itime, it increases each step. Each step, I would like to reallocate my array, keeping the old values, and add new values to the array. When itime=1, I use only malloc, because it is allocated for the first time. When itime increases (e.q. itime=2), realloc comes into process. In the realloc process the GUI crashes.

int itime;
char ** solpointer;
itime = 1;
do {
if( itime == 1 ) {
solpointer = (char**)malloc(sizeof(char*) * itime);
solpointer[itime-1] = (char*)malloc(sizeof(char) * 32);

[code]....

View 3 Replies View Related

C/C++ :: How To Dynamically Expand Array

Sep 8, 2014

I am working on expanding an array and my approach was to do this by copying the array into a bigger array. For this problem I cannot use vectors so what I did was the following:

int *a;
a = new int[5];
for(int i=0;i<5;i++)
*(a+i)=i;
// reallocating array
int* temp = new int[6];
std::copy(a, a + 5, temp);
delete [] a;
a = temp;

Is this approach correct, also how could I implement this on a program to expand an array to double its size or could I not use this to expand an array to double its size?

View 2 Replies View Related

C++ :: Accessing Elements Of Array Dynamically

Jul 26, 2014

I want to access the elements of my array dynamically. So far I've only figured out how to do this manually. if I tried it like this my code would work but there should be a better way right?

View 10 Replies View Related

C++ :: Size Of Dynamically Created Array

Dec 2, 2013

I have declared an array like:

/***********Creating an m*p array**********************/
B = new int *[m];

for(row=0;row<m;++row)
B[row] = new int[p];

How to find the number of elements in it?

The statement

cout << "number of elements in array B equals " << sizeof(B) << endl;

returns 4 each time the program runs

View 3 Replies View Related

C++ :: Dynamically Allocate Array Of Strings

Jul 26, 2014

I know I can allocate it this way, on the stack:

char* str[5];
for(i = 0; i < 5; ++i) {
str[i] = new char[STR_SIZE];
}

But if I want to allocate array size through 'new', what's the syntax for that?

I thought this might work, but it gives error: "Initialization with {...} expected for aggregate object"

char* newString[] = new char[5][ARRAYSIZE];

View 6 Replies View Related

C++ :: Dynamically Allocated Array Parameters?

Oct 4, 2014

I have changed my const global int NUMLABS to a non constant variable so that the user can decide how many labs to input. I adjusted the parameters of each function to add NUMLABS becuase the variable is no longer constant. But now main() returns 0 right after the user chooses how many stations to put in each lab. I am having difficulty understanding these dynamically allocated arrays.

/*********************************************************************
Lab4.cpp

This program uses dynamic arrays to store login information for four labs. Each of the four labs is referenced by the labs[] array which is indexed from 0-3. A pointer in the labs[] array then references a dynamic array that is of size for however many computers are in that lab.

Written by: Luca Del Signore
Last modified on: October 3rd
Known bugs: N/A
*********************************************************************/
#include <iostream>
#include <cstdlib>
using namespace std;

[Code]....

View 1 Replies View Related

C++ :: Dynamically Increasing Array In Class

May 2, 2014

class Album{
private:
char albumName[100];
Song* List;
int numSongs;
public:
Album(char*);
~Album();

[Code] ....

And everytime I create the class it can have only one song because I set numSongs to zero.

View 2 Replies View Related







Copyrights 2005-15 www.BigResource.com, All rights reserved