Go4Expert

Go4Expert (http://www.go4expert.com/)
-   MFC (http://www.go4expert.com/forums/mfc/)
-   -   memory allocation problem in 2d array (http://www.go4expert.com/forums/memory-allocation-2d-array-t9285/)

rinuvc 12Mar2008 20:26

memory allocation problem in 2d array
 
--------------------------------------------------------------------------------

hi all

am havin a problem with memory allocation of 2d array

can any body help me out ...


it goes like this

char ** a;

in a loop for each time

a[i] = new char[strlen(name)+1];

strcpy(a[i],name);

a[i][strlen(name)+1]='\0';


in a loop i deallocate it with

delete[] a[i];

after the loop

delete [] a;



can any body help me with this ????
thanks in advance... :confused:

asadullah.ansari 13Mar2008 10:16

Re: memory allocation problem in 2d array
 
According to you i run this programm.
No problem . Can you specify your problem problem?
Code:

#include<string.h>
#include<stdio.h>

int main()
{
  char ** a;
  char *name="Go4Expert";
  int i,n=5;
  for(i=0;i<n;++i)
  {
    a[i] = new char[strlen(name)+1];
    strcpy(a[i],name);
    a[i][strlen(name)+1]='\0';
  }
  for(i=0;i<n;++i)
  {
    printf("%s",a[i]);
  }
  for(i=0;i<n;++i)
    delete[] a[i];
  delete a;
  return 0;
}


rinuvc 13Mar2008 12:22

Re: memory allocation problem in 2d array
 
i have done it in vc++

this is the code

Code:

char ** interfaceName;

void CIDLDETAILS :: getInterface(char Buff[],int len) //parses the internal interface from the file
{
        int j,k = 0,cnt = 0,count = 0,flag = 0;
        char keyword[] = Interface;
        int        keywordLength = strlen(keyword);
        char interfaceNameTemp[60];
        interfaceName = new char *[50];  // :confused:
        for(int i = 0; i < len; i++)
        {       
               
        for( j = 0 ; j <keywordLength  && (keyword[j] == Buff[i+j]); j++)
        {
        }
        if (j == keywordLength)
        {
              if(Buff[i-1] == SPACE || Buff[i-1] == NEWLINE)
                if(Buff[i+j] == SPACE )
              {
                  while(Buff[i+j] != SPACE )
                  {
                i++;
        }
        while(IsCharAlphaNumeric( Buff[j+i+k+1] ) || Buff[j+i+k+1] == UNDERSCORE)
        {
        interfaceNameTemp[k] = Buff[j+i+k];
        k++;
        }
                interfaceNameTemp[k] = Buff[j+i+k];
        interfaceNameTemp[k+1] = ENDOFARRAY;
        count = cnt;
        flag = 0;
        while(count != 0)                                    //Avoiding the Duplicate Interfaces
        {
            if((strcmp(interfaceNameTemp,interfaceName[count-1])) == 0)
            {
                flag = 1;
                break;
                    }
            count--;
        }
        if(flag == 0)
        {
          interfaceName[cnt] = new char[strlen(interfaceNameTemp)+1]; :confused:
          strcpy(interfaceName[cnt],interfaceNameTemp); :confused:
          interfaceName[cnt][k+1] = '\0'; :confused:
                  cnt++;
        }
                k = 0;
              }
          }
      }
    m_InterfaceCount = cnt;
    for(int i = 0; i < cnt ; i++)
      MessageBox(CString(interfaceName[i]));

for(int i = 0; i < m_InterfaceCount ; i++)
          delete[]interfaceName[i]; :confused:
        delete []interfaceName; :confused:

}



am trying to parse a file put the internal interface of the idl file

in to the array


its running ok but as soon as i close the dialog box an go to the main dialog box
its shows #2 stack around the variable m_dlg( which is a dialog object????) is corrupted

asadullah.ansari 13Mar2008 13:53

Re: memory allocation problem in 2d array
 
I think it's not part of c++. You can put this querry in win32/MFC forum.

asadullah.ansari 13Mar2008 14:30

Re: memory allocation problem in 2d array
 
Please ensure that no duplication of any article/qwuerry should be.

So please shabbir just close this thread.

shabbir 13Mar2008 14:55

Re: memory allocation problem in 2d array
 
I have closed your other thread and moved the current thread to MFC/Win32 forum


All times are GMT +5.5. The time now is 09:47.