×

Discussion Board

Results 1 to 11 of 11

Thread: Errors!

  1. #1
    Registered User
    Join Date
    Nov 2007
    Posts
    45

    Errors!

    Давайте обсуждать всякие ошибки тут..
    У меня при выходе из приложения выходит ошибка. Ну диалоговое окно со знаком "STOP".

    Then app closed i have a problem:

    Applicaton closed: <appName> Alloc: 305f09600

    Что это значит ?

    What does it mean?

  2. #2
    Super Contributor
    Join Date
    Jun 2006
    Location
    Moscow, Russia
    Posts
    803

    Re: Errors!

    Это утечка памяти.

    Эта статья может быть полезна: http://wiki.forum.nokia.com/index.ph...ю_HookLogger
    Regards,
    ivey

  3. #3
    Registered User
    Join Date
    Nov 2007
    Posts
    45

    Re: Errors!

    Code:
    	TPoint* pointList=new (ELeave) TPoint[numberOfPoints];
            CleanupStack::PushL (pointList);
    	for( int i=0;i< numberOfPoints;i++)
    		{
    			/*do somethink this pointList[i]*/
    		}
            fbsGc->DrawPolygon(pointList,numberOfPoints);
    	CleanupStack::PopAndDestroy(pointList);
    Why here popup -42 error ?
    If i do not delete pointList, then its OK, but here memorLeak i have. ^_^

    Так черт.. Вот короче, странно,но когда я удаляю pointList , то у меня выходит ошибка... Если не удаляю, то утечка мозгов получается.. Что делать ?

  4. #4
    Nokia Developer Champion
    Join Date
    Jul 2007
    Location
    Magnitogorsk, Russia
    Posts
    536

    Re: Errors!

    Quote Originally Posted by midday View Post
    Code:
    	TPoint* pointList=new (ELeave) TPoint[numberOfPoints];
            CleanupStack::PushL (pointList);
    	for( int i=0;i< numberOfPoints;i++)
    		{
    			/*do somethink this pointList[i]*/
    		}
            fbsGc->DrawPolygon(pointList,numberOfPoints);
    	CleanupStack::PopAndDestroy(pointList);
    Why here popup -42 error ?
    If i do not delete pointList, then its OK, but here memorLeak i have. ^_^

    Так черт.. Вот короче, странно,но когда я удаляю pointList , то у меня выходит ошибка... Если не удаляю, то утечка мозгов получается.. Что делать ?
    Потому что CleanupStack::PopAndDestroy() извлекает из стека и делает delete, а в данном случае надо delete [].

    Используйте RArray какой-нибудь.
    Last edited by Den123; 2007-12-04 at 13:58.

  5. #5
    Super Contributor
    Join Date
    Jun 2006
    Location
    Moscow, Russia
    Posts
    803

    Re: Errors!

    Quote Originally Posted by midday View Post
    Code:
    	TPoint* pointList=new (ELeave) TPoint[numberOfPoints];
            CleanupArrayDeletePushL(pointList);
    	for( int i=0;i< numberOfPoints;i++)
    		{
    			/*do somethink this pointList[i]*/
    		}
            fbsGc->DrawPolygon(pointList,numberOfPoints);
    	CleanupStack::PopAndDestroy();
    Вот так должно быть нормально
    Regards,
    ivey

  6. #6
    Regular Contributor
    Join Date
    Sep 2003
    Posts
    134

    Re: Errors!

    Ей, а ты зачто TPoint и new[] делаешь?
    CleanupStack "обслуживает" СBase derived классы.

    TPoint-у в массиве если нада, то храни в RArray<TPoint> или CArrayFix< TPoint >
    если именно для функции DrawPolygon.

    DrawPolygon(const TPoint *aPointList .... ) видимо с целью оптимизации добавили.

  7. #7
    Super Contributor
    Join Date
    Jun 2006
    Location
    Moscow, Russia
    Posts
    803

    Re: Errors!

    Quote Originally Posted by ValentinK View Post
    CleanupStack "обслуживает" СBase derived классы.
    Это неверное утверждение. CleanupStack "обслуживает" все, что не удаляется автоматически, т.е. может привести к утечкам памяти.

    На счет RArray и CArrayXXX согласен, но использовать обычные массивы тоже никто не запрещает.
    Regards,
    ivey

  8. #8
    Registered User
    Join Date
    Nov 2007
    Posts
    45

    Re: Errors!

    Спасибо большое ;-)
    Экспириенс повышается постепенно
    Ну я привык так )) вот и всё.. Потом перейду на CArray...

  9. #9
    Regular Contributor
    Join Date
    Sep 2003
    Posts
    134

    Re: Errors!

    Quote Originally Posted by ivey View Post
    Это неверное утверждение. CleanupStack "обслуживает" все, что не удаляется автоматически, т.е. может привести к утечкам памяти.

    На счет RArray и CArrayXXX согласен, но использовать обычные массивы тоже никто не запрещает.
    Ну не согласен с тем что ""обслуживает" все, что не удаляется автоматически" это тоже не верно, тк он удаляет корректно примитивные типы, что есть в данном случае, классы с виртуальным деструктором ( аля CBase derived ) и те у кого имеется TCleanupOperation функция.

  10. #10
    Nokia Developer Champion
    Join Date
    Jul 2007
    Location
    Magnitogorsk, Russia
    Posts
    536

    Re: Errors!

    Quote Originally Posted by midday View Post
    Спасибо большое ;-)
    Экспириенс повышается постепенно
    Ну я привык так )) вот и всё.. Потом перейду на CArray...
    Мне тоже кажется, что лучше использовать потомка CArrayFix в данном случае...

    Про классы для организации коллекций можно почитать тут:
    http://wiki.forum.nokia.com/index.ph...86%D0%B8%D0%B9

  11. #11
    Super Contributor
    Join Date
    Jun 2006
    Location
    Moscow, Russia
    Posts
    803

    Re: Errors!

    Quote Originally Posted by ValentinK View Post
    Ну не согласен с тем что ""обслуживает" все, что не удаляется автоматически"
    Jo Stichbury, "Symbian OS Explained":
    Objects that are not otherwise leave-safe should be placed on the
    cleanup stack before calling code that may leave.


    Quote Originally Posted by ValentinK View Post
    он удаляет корректно примитивные типы, что есть в данном случае, классы с виртуальным деструктором ( аля CBase derived ) и те у кого имеется TCleanupOperation функция.
    CleanupStack::PushL() имеет 3 варианта:
    Code:
    CleanupStack::PushL(CBase *aPtr); // a
    CleanupStack::PushL(TCleanupItem anItem); // b
    CleanupStack::PushL(TAny *aPtr); // c
    a) это для тех, кто наследуется от CBase и, соответственно, имеет виртуальный деструктор. При уничтожении таких объектов вызывается деструктор;
    b) для тех, кто имеет какой-то метод для освобождения ресурсов (Close(), Release(), Delete() и т.д.). Этот метод и будет вызываться;
    c) для всех остальных. При их уничтожении просто вызывается User::Free().
    Regards,
    ivey

Similar Threads

  1. Bluetooth Connection woes
    By GrahamKelly in forum Mobile Java Networking & Messaging & Security
    Replies: 1
    Last Post: 2007-12-02, 06:37
  2. Strange compilation errors
    By Wintry in forum Symbian C++
    Replies: 2
    Last Post: 2006-10-21, 17:17
  3. ETel GSM errors
    By isymdev in forum Symbian C++
    Replies: 0
    Last Post: 2006-06-21, 08:01
  4. errors while porting application
    By iti_jha in forum Symbian C++
    Replies: 6
    Last Post: 2006-06-14, 10:21
  5. how to resolve these linker errors...?
    By peter_k_john in forum Carbide.c++ IDE and plug-ins (Closed)
    Replies: 4
    Last Post: 2005-11-01, 04:29

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •