
01.07.2007, 11:12
|
|
Флудер
Регистрация: 12.08.2004
Сообщений: 3,791
С нами:
11444066
Репутация:
2290
|
|
Юзай new/delete вместо (m/c)alloc/free
|
|
|

01.07.2007, 15:51
|
|
Участник форума
Регистрация: 04.11.2006
Сообщений: 150
С нами:
10271420
Репутация:
175
|
|
Сообщение от nerezus
Юзай new/delete вместо (m/c)alloc/free
плахой совет, ибо exception safe код при явном вызове delete получить трудно, потому правильный совет звучит так-
используйте умные указатели и обёртки над указателями вместо освобождения ресурсов на прямую.
|
|
|

01.07.2007, 14:44
|
|
Постоянный
Регистрация: 03.02.2007
Сообщений: 520
С нами:
10140806
Репутация:
932
|
|
Или вот: http://www.codenet.ru/progr/visualc/esmall/add.txt
|
|
|

02.07.2007, 11:17
|
|
Познавший АНТИЧАТ
Регистрация: 16.04.2006
Сообщений: 1,488
С нами:
10562786
Репутация:
537
|
|
подскажите вот что:
entries = (char**)realloc(entries, arr_size*sizeof(char*));
такой строкой я заново переопределяю массив указателей entries или к нему как-то добавляется свободное место?
мне нужно в цикле добавлять в динамический массив указатели и каждый раз увеличивать его размер.
а дальше вот функция, которую я родил, если не лень, попробуйте скомпилить и скажите почему она ничего не выводит:
Код:
#include "stdio.h" // ввод/вывод
#include "stdlib.h" // работа с памятью
char ** fndr(char *s1, char *s2, int *n_entrs)
{
char ** entries = NULL; // массив с указателями на вхождения
int arr_size = 2; // изначально его размер 0
int counter = 0; // счётчик записей
int destroy = 0; // если все буквы совпали то она равна нулю
for(int s1_len=0;s1[s1_len] != '\0'; s1_len++); // s1_len - длина первой строки
for(int s2_len=0;s2[s2_len] != '\0'; s2_len++); // s2_len - длина второй строки
for (int i=0; i<s1_len; i++)
{
if(s1[i] == s2[0]) // если совпал первый символ
{
for(int g=0; g<s2_len; g++)
{
if(s1[i+g] != s2[g])
destroy = 1;
}
if(!destroy)
{
if(counter >= arr_size)
{
arr_size *= 2;
entries = (char**)realloc(entries, arr_size*sizeof(char*)); // добавление памяти
}
entries[counter] = &s1[i]; // добавление указателя в массив
counter++; // счотчик инкрементируем
}
}
} // конец перебора первой строки
*n_entrs = counter;
return entries;
}
void main()
{
char s1[] = "my house is you house in you house is wife";
char s2[] = "house";
char ** entries; // массив с указателями на вхождения
int n_entrs = 0; // кол-во вхождений
entries = fndr(s1, s2, &n_entrs);
for (int n=0; n<n_entrs; n++)
printf("%s \n", entries[n]);
free(entries);
}
|
|
|

06.07.2007, 19:38
|
|
Новичок
Регистрация: 11.06.2006
Сообщений: 4
С нами:
10481571
Репутация:
1
|
|
Тут некоторые сортировки на С++, реализация. Если кому надо.
http://www3.msiu.ru/~roganov/2sem/sort.cpp
|
|
|

15.09.2007, 18:07
|
|
Banned
Регистрация: 11.08.2006
Сообщений: 1,522
С нами:
10393869
Репутация:
2032
|
|
дайте инфы по оверлеям с нуля плз. юзал поиск, не нашел
ЗЫ не нашел другого раздела, чтобы спросить=\
|
|
|

15.09.2007, 20:44
|
|
Постоянный
Регистрация: 27.08.2006
Сообщений: 367
С нами:
10370602
Репутация:
472
|
|
Piflit, я тебе уже писал, тебе нужно ознакомиться с документациями по формату PE, но уровень на котором ты находишься сейчас явно не предполагает ознакомления с этой темой. Лучше разберись с основнами для начала. Про указатели, ссылки почитай и т.п. И еще, не путай, если хочешь учиться покупай книгу именно по С, а не талмуд по С++ , ООП на данный момент тебе явно не нужно.
Оверлей – это то, что находится между физическим концом последней секции и концом файла. Конечно, оверлей может содержать и полезную для файла информацию.
wasm.ru -> статьи и форум, лучше чем там не ответят пожалуй нигде.
Последний раз редактировалось Ni0x; 15.09.2007 в 21:15..
|
|
|

15.09.2007, 20:53
|
|
Banned
Регистрация: 11.08.2006
Сообщений: 1,522
С нами:
10393869
Репутация:
2032
|
|
Сообщение от Ni0x
Piflit, я тебе уже писал, тебе нужно ознакомиться с документациями по формату PE, но уровень на котором ты находишься сейчас явно не предполагает ознакмоления с этой темой. Лучше разберись с основнами для начала. Про указатели, ссылки почитай и т.п. И еще, не путай, если хочешь учиться покупай книгу именно по С, а не талмуд по С++ , ООП на данный момент тебе явно не нужно.
Спасибо за ответ. Я знаю, что ты много занешь, просто хочется услышать еще чьи-то мнения.
|
|
|

20.09.2007, 21:01
|
|
Познающий
Регистрация: 14.06.2006
Сообщений: 30
С нами:
10478216
Репутация:
11
|
|
Задание А:
Вычислить значение функции. Осушествить вывод значений вводимых исходных данных и результат вычисления значений функции, сопровождая вывод наименованиями переменных.
Функция: f= lg(x+1) и sin^2SQR|ax| (тут система уравнений)
Условие: x>1 ; x <=1
Исходные даннные: a=20.3
Задание Б:
Диапазон и шаг изменения аргумента: x [0.5;2] , дельтаX=0.1
Модифицыровать программу таким образом, чтобы вычислялось многократно значение функции при изменении агрумента в указаном диапазоне и с заданым шагом.
Организовать вывод значения аргумента, и вычисленного значения функции в виде таблицы.
Таблица функции Y(X):
X Y
.... ....
.... ....
P.S помогите 
Последний раз редактировалось ph0en1x; 22.09.2007 в 18:45..
|
|
|

20.09.2007, 21:42
|
|
Познающий
Регистрация: 25.05.2007
Сообщений: 36
С нами:
9981605
Репутация:
28
|
|
а на чём, т.е. каком языке это делать надо?
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|