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

Все, что вы хотели знать о программизме, но боялись спросить.
Ответить
Аватара пользователя
Dimastik
Частый Гость
Сообщения: 37
Зарегистрирован: 16 окт 2006, 01:41
Откуда: Оттуда - Ванкувер

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

Сообщение 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());
}

Аватара пользователя
akela
Графоман
Сообщения: 13066
Зарегистрирован: 21 авг 2007, 10:25
Откуда: ru->de->bc.ca

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

Сообщение akela »

о, какой душевный код.
ф каждай строчки па читыри ашыпки.
Аватара пользователя
папа Карло
Шарманщик
Сообщения: 8565
Зарегистрирован: 17 фев 2003, 15:04
Откуда: НН -> BC -> WA -> UT -> CA

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

Сообщение папа Карло »

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

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

Сообщение badger »

Хахаха. Я чуть под стол не упал. Какой идиот составлял такую задачу. Думаю, лучше будет, если вы забудете об этой компании. Задача составлена топорно и для тестеров и для девелоперов. Для менеджеров пойдёт!
Аватара пользователя
Dimastik
Частый Гость
Сообщения: 37
Зарегистрирован: 16 окт 2006, 01:41
Откуда: Оттуда - Ванкувер

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

Сообщение Dimastik »

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

Очень нужна помощь ....
Аватара пользователя
Stanislav
Mr. Minority Report
Сообщения: 45504
Зарегистрирован: 19 окт 2005, 16:33
Откуда: Moscow - Richmond - New Wesт - Burnaby - PoCo

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

Сообщение 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 шт. в каждой строке - его пытайте...
Аватара пользователя
aissp
Маньяк
Сообщения: 2710
Зарегистрирован: 07 ноя 2005, 09:51

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

Сообщение 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
}
Аватара пользователя
_av
Маньяк
Сообщения: 3451
Зарегистрирован: 01 окт 2011, 08:00

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

Сообщение _av »

aissp писал(а):

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

char*func() //пропущен пробел
как я помню можно без пробела
Аватара пользователя
aissp
Маньяк
Сообщения: 2710
Зарегистрирован: 07 ноя 2005, 09:51

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

Сообщение aissp »

прально помнищь, проверил - ето я плохой :)
Аватара пользователя
Dimastik
Частый Гость
Сообщения: 37
Зарегистрирован: 16 окт 2006, 01:41
Откуда: Оттуда - Ванкувер

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

Сообщение Dimastik »

Ребята, спасибо огромное, выручили меня невероятно.

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

:D
Аватара пользователя
Stanislav
Mr. Minority Report
Сообщения: 45504
Зарегистрирован: 19 окт 2005, 16:33
Откуда: Moscow - Richmond - New Wesт - Burnaby - PoCo

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

Сообщение Stanislav »

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