• В чем мои ошибки в коде?

    Andrey2008
    @Andrey2008
    DevRel в PVS-Studio
    Не знаю касательно корректности алгоритма, но PVS-Studio обнаруживает 4 ошибки, из-за которых уже и так всё работает не так как надо.
    SetOfNumb(int a[]) {
    size = sizeof(a)-1;
    V511 The sizeof() operator returns size of the pointer, and not of the array, in 'sizeof (a)' expression. consoleapplication2017.cpp 37
    Оператор sizeof вычислят здесь размер указателя, а не массива. В результате, переменная size всегда будет равна 3 в 32-битной программе или 7 в 64-битной программе.

    Аналогично здесь:
    size = sizeof(a);
    V511 The sizeof() operator returns size of the pointer, and not of the array, in 'sizeof (a)' expression. consoleapplication2017.cpp 46

    И здесь:
    for (int i = 0, j = 0; i < sizeof(temp.arr); i++) {

    V604 It is odd that the number of iterations in the loop equals to the size of the 'temp.arr' pointer. consoleapplication2017.cpp 88

    Ещё происходит ошибка копирования:
    n = z;
    V1002 The 'SetOfNumb' class, containing pointers, constructor and destructor, is copied by the automatically generated operator=. consoleapplication2017.cpp 140
    Класс SetOfNumb сложный, выделяет память. Но при этом отсутствует operator =. В результате просто копируются члены класса, что приведёт к двойному освобождению памяти.
    Ответ написан
    5 комментариев