delete[] pointer being freed was not allocated

Gerard

I am using the new operator to create a dynamically allocated array (I am using this one because I want to save on the memory overhead of using a vector). The error occurs in the destructor, saying the pointer being freed was not allocated although obviously it was. The constructors and destructors are as follows:

~Path() {
    printf("Path Destructor\n");
    if(points) {
        delete[] points;
    }
}
Path(const std::vector<PathPoint>& points_) {
    size = points_.size();
    points = new PathPoint[size];
    int i = 0;
    for(const PathPoint& p : points_) {
        points[i++] = p;
    }
    printf("Path created\n");
}
quantdev

You have to apply The Rule of Three :

The C++ standard says that :

The implicitly-defined copy constructor for a non-union class X performs a memberwise copy of its subobjects. [n3126.pdf section 12.8 §16]

The implicitly-defined copy assignment operator for a non-union class X performs memberwise copy assignment of its subobjects. [n3126.pdf section 12.8 §30]

So the implicitly-defined copy constructor and copy assignment operator for your Path class will not call new[] for you.

Define a copy constructor and a copy assignment oerator that perform the required allocation.


Note:

  • You can also make your type non copyable, declare them without definition :

E.g. :

 Path( const Path& other );      // non construction-copyable
 Path& operator=( const Path& ); // non copyable

(or use boost::noncopyable)

  • The typical overhead of a std::vector<> is very very low, there are few contexts where it really matters : use it as much as you can to avoid such problems.

Collected from the Internet

Please contact [email protected] to delete if infringement.

edited at
0

Comments

0 comments
Login to comment

Related

From Dev

"pointer being freed was not allocated"

From Dev

pointer being freed was not allocated(delete one element in an array)

From Dev

pointer being freed was not allocated in C

From Dev

C++: pointer being freed was not allocated

From Dev

malloc and free: pointer being freed was not allocated

From Dev

C "pointer being freed was not allocated" error

From Dev

C Program Issue "pointer being freed was not allocated"

From Dev

C "pointer being freed was not allocated" error

From Dev

malloc and free: pointer being freed was not allocated

From Dev

c++ pointer being freed was not allocated error

From Dev

Pointer being freed was not allocated! Cannot be solved

From Dev

Pointer being freed was not allocated even though it was allocated before

From Dev

Pointer being freed was not allocated, dynamic array C++

From Dev

"Pointer being freed was not allocated." error after malloc, realloc

From Dev

" malloc error pointer being freed was not allocated " error only in simulator:

From Dev

(C++ Error: pointer being freed was not allocated) for linked lists

From Dev

Debugging "malloc error: pointer being freed was not allocated", using gdb

From Dev

Mac Terminal - 'pointer being freed was not allocated' error when opening terminal

From Dev

C: malloc error-pointer being freed was not allocated

From Dev

Pointer being freed was not allocated (while implementing stack as a linked list)

From Dev

"Pointer being freed was not allocated" happen on mac but not on window7

From Dev

"Pointer being freed was not allocated." error after malloc, realloc

From Dev

Mac Terminal - 'pointer being freed was not allocated' error when opening terminal

From Dev

When I pop, i get "pointer being freed was not allocated" error

From Dev

pointer being freed was not allocated error when deleting reference

From Dev

C: pointer being freed was not allocated -- when calling free

From Dev

C++ Pointer being freed was not allocated. Not calling free

From Dev

Pointer being freed was not allocated when implementing Matrix<T> class

From Dev

error: Pointer being freed was not allocated in vector template class c++

Related Related

  1. 1

    "pointer being freed was not allocated"

  2. 2

    pointer being freed was not allocated(delete one element in an array)

  3. 3

    pointer being freed was not allocated in C

  4. 4

    C++: pointer being freed was not allocated

  5. 5

    malloc and free: pointer being freed was not allocated

  6. 6

    C "pointer being freed was not allocated" error

  7. 7

    C Program Issue "pointer being freed was not allocated"

  8. 8

    C "pointer being freed was not allocated" error

  9. 9

    malloc and free: pointer being freed was not allocated

  10. 10

    c++ pointer being freed was not allocated error

  11. 11

    Pointer being freed was not allocated! Cannot be solved

  12. 12

    Pointer being freed was not allocated even though it was allocated before

  13. 13

    Pointer being freed was not allocated, dynamic array C++

  14. 14

    "Pointer being freed was not allocated." error after malloc, realloc

  15. 15

    " malloc error pointer being freed was not allocated " error only in simulator:

  16. 16

    (C++ Error: pointer being freed was not allocated) for linked lists

  17. 17

    Debugging "malloc error: pointer being freed was not allocated", using gdb

  18. 18

    Mac Terminal - 'pointer being freed was not allocated' error when opening terminal

  19. 19

    C: malloc error-pointer being freed was not allocated

  20. 20

    Pointer being freed was not allocated (while implementing stack as a linked list)

  21. 21

    "Pointer being freed was not allocated" happen on mac but not on window7

  22. 22

    "Pointer being freed was not allocated." error after malloc, realloc

  23. 23

    Mac Terminal - 'pointer being freed was not allocated' error when opening terminal

  24. 24

    When I pop, i get "pointer being freed was not allocated" error

  25. 25

    pointer being freed was not allocated error when deleting reference

  26. 26

    C: pointer being freed was not allocated -- when calling free

  27. 27

    C++ Pointer being freed was not allocated. Not calling free

  28. 28

    Pointer being freed was not allocated when implementing Matrix<T> class

  29. 29

    error: Pointer being freed was not allocated in vector template class c++

HotTag

Archive