Страница 1 из 1
Ох, уж эта наука!
Добавлено: 09 дек 2011, 13:34
Dimastik
Ищу работу тестера, и вот в одной из компаний мне предложили подумать над таким вопросом, а с програмированием как то напряженка.
Может, кто-то из Каморкчан сумеет помочь с такой задачей.
Заранее всех благодарю
Код: Выделить всё
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 писал(а):Ищу работу тестера, и вот в одной из компаний мне предложили подумать над таким вопросом, а с програмированием как то напряженка.
я хоть и не дев ошибок тоже понаходил. не флейма ради, всегда считал, что тестеры должны программировать лучше девелоперов. ибо они не только код должны уметь писать и читать, но и в нем еще и дерьмо находить как собственно в примере выше.
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
как я помню можно без пробела
Re: Ох, уж эта наука!
Добавлено: 13 дек 2011, 20:18
aissp
прально помнищь, проверил - ето я плохой

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

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

Правильные ответы - в студию!