Страница 1 из 1

Ох, уж эта наука!

Добавлено: 09 дек 2011, 13:34
Dimastik
Ищу работу тестера, и вот в одной из компаний мне предложили подумать над таким вопросом, а с програмированием как то напряженка. :s2:
Может, кто-то из Каморкчан сумеет помочь с такой задачей. :razz:
Заранее всех благодарю

Код: Выделить всё

Document as many issues/errors in the following code block as you can see:

char*func()
{
    char data[4];
    data[1] = ‘1’;
    data[2] = ‘2’;
    data[3] = ‘3’;
    data[4] = ‘4’;
    int* p = new int[10];

    char *buffer = malloc(100);
    buffer[1] = data[1];

    delete p;
    return data;
}

void test1()
{
    printf(func());
}


Re: Ох, уж эта наука!

Добавлено: 09 дек 2011, 14:11
akela
о, какой душевный код.
ф каждай строчки па читыри ашыпки.

Re: Ох, уж эта наука!

Добавлено: 09 дек 2011, 14:30
папа Карло
Dimastik писал(а):Ищу работу тестера, и вот в одной из компаний мне предложили подумать над таким вопросом, а с програмированием как то напряженка. :s2:
я хоть и не дев ошибок тоже понаходил. не флейма ради, всегда считал, что тестеры должны программировать лучше девелоперов. ибо они не только код должны уметь писать и читать, но и в нем еще и дерьмо находить как собственно в примере выше.

Re: Ох, уж эта наука!

Добавлено: 09 дек 2011, 22:01
badger
Хахаха. Я чуть под стол не упал. Какой идиот составлял такую задачу. Думаю, лучше будет, если вы забудете об этой компании. Задача составлена топорно и для тестеров и для девелоперов. Для менеджеров пойдёт!

Re: Ох, уж эта наука!

Добавлено: 11 дек 2011, 15:35
Dimastik
Я бы с удовольстием забыл про эту компанию и может даже про все остальные, но к сожалению очень сейчас нужна работа.
Очень надеялся, что кто то все же обозначит хотя бы несколько ключевых моментов

Очень нужна помощь ....

Re: Ох, уж эта наука!

Добавлено: 11 дек 2011, 19:00
Stanislav
Dimastik писал(а):Я бы с удовольстием забыл про эту компанию и может даже про все остальные, но к сожалению очень сейчас нужна работа.
Очень надеялся, что кто то все же обозначит хотя бы несколько ключевых моментов
Очень нужна помощь ....
Гыыы... Ну раз просите...
Последний раз на С я писал 25 лет назад, так что не обессудьте...

>>char*func()
пробел пропустили: char* func()

>>char data[4];
>>data[1] = ‘1’;
Кавычки не той системы

>>data[4] = ‘4’;
Выход за границы массива - индексы начинаются с 0

char *buffer = malloc(100);
В дальнейшем buffer не освобождается - маленький, но мемори лик

int* p = new int[10];
delete p;
new & delete - это фичи С++
Не знаю какой тут язык С или С++.
Лучше бы этот был код на С, потому что если это код на С++ то компилятор еще и обматерит на тайп мизмач многа раз.

void test1()
{
printf(func());
Будет напечатан указатель (функция об'явлена как указатель на char), а не его значение (собсно char).
Ну и вообще этот массив должен печатается поэлементно - data не является строкой - последний элемент не \0 и нету формата "%s"

ФСЕ. Это все что помню...

Akela больше ошибок нашел - по 4 шт. в каждой строке - его пытайте...

Re: Ох, уж эта наука!

Добавлено: 12 дек 2011, 08:31
aissp

Код: Выделить всё

char*func() //пропущен пробел
{
    char data[4];
    data[1] = ‘1’;  //индексация начинается с нуля, не првильные кавычки
    data[2] = ‘2’;
    data[3] = ‘3’;
    data[4] = ‘4’; //stack corruption
    int* p = new int[10]; //нет проверки на нулл

    char *buffer = malloc(100); //нет прверки на нулл
    buffer[1] = data[1];

    delete p;   //массивы освобождаются  delete[] 
 //не освободили buffer
    return data; // data объявлена на стеке с уходом будет указывать в никуда (если код не однопоточный)
}

void test1()
{
    printf(func()); //с большой вероятностью стек каррапшен, сам  printf написан корректно char f() {return "qqq"} prontf(f()); //ok
}

Re: Ох, уж эта наука!

Добавлено: 13 дек 2011, 19:09
_av
aissp писал(а):

Код: Выделить всё

char*func() //пропущен пробел
как я помню можно без пробела

Re: Ох, уж эта наука!

Добавлено: 13 дек 2011, 20:18
aissp
прально помнищь, проверил - ето я плохой :)

Re: Ох, уж эта наука!

Добавлено: 13 дек 2011, 22:34
Dimastik
Ребята, спасибо огромное, выручили меня невероятно.

Очень, очень благодарен.

:D

Re: Ох, уж эта наука!

Добавлено: 14 дек 2011, 14:55
Stanislav
Dimastik писал(а):Ребята, спасибо огромное, выручили меня невероятно.
Очень, очень благодарен.
:D
Правильные ответы - в студию!