HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
Баннер 1   Баннер 2
НОВЫЕ ТОРГОВАЯ НОВОСТИ ЧАТ
loading...
Скрыть
Вернуться   ANTICHAT > ПРОГРАММИРОВАНИЕ > С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #1  
Старый 30.03.2010, 16:38
Dark_Scorpicore
Познающий
Регистрация: 04.04.2009
Сообщений: 58
С нами: 9001761

Репутация: 19
По умолчанию

Здравствуйте, господа форумчане!

Вопрос по C, именно по библиотеке curl.

Напомню, что в C для того, чтобы записать результат работы сессии курла, нужно юзать специальную функцию(в php удобнее - есть RETURNTRANSFER, но мы не ищем легких путей). Функция есть, нормально пишет.

Если сайт-жертва делает редирект, то curl использует параметр
Код:
curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, true);
для перехода по редиректу. Но пишет в итоговую переменную исходник НЕ той странички, на которую был редирект, а самой первой, на которой была ссылка с редиректом.

Собственно, как решить данный трабл?

Спасибо за помощь.
 
Ответить с цитированием

  #2  
Старый 30.03.2010, 20:55
qwert135
Познающий
Регистрация: 22.11.2009
Сообщений: 53
С нами: 8667664

Репутация: 0
По умолчанию

всем привет.как на С++ реализовать следующее действие: передать одномерный массив,заданный через указатель, из одной функции в другую.спасибо.
 
Ответить с цитированием

  #3  
Старый 31.03.2010, 08:47
krypt3r
Познавший АНТИЧАТ
Регистрация: 27.04.2007
Сообщений: 1,044
С нами: 10021597

Репутация: 905


По умолчанию

что-то типа
Код:
int func1 (int *array) {
...
}

int func2 (...) {
  myvar = func1 (massiv)
}
где massiv - указатель на одномерный массив
 
Ответить с цитированием

  #4  
Старый 01.04.2010, 20:30
SHiNiGaMi
Познающий
Регистрация: 03.01.2010
Сообщений: 42
С нами: 8606717

Репутация: 3
По умолчанию

rudvil

int CurrentMemory=0;
int *pint = new int;
if ((CurrentMemory +=sizeof(pint)) >= 20480)
{
cout << "память заполнена";
delete pint;
}
else CurrentMemory +=sizeof(*pint);

строго не судите, но возможно так

Последний раз редактировалось SHiNiGaMi; 01.04.2010 в 20:41..
 
Ответить с цитированием

  #5  
Старый 01.04.2010, 23:46
rudvil
Участник форума
Регистрация: 25.08.2008
Сообщений: 187
С нами: 9320830

Репутация: 86
По умолчанию

Цитата:
Сообщение от SHiNiGaMi  
rudvil

int CurrentMemory=0;
int *pint = new int;
if ((CurrentMemory +=sizeof(pint)) >= 20480)
{
cout << "память заполнена";
delete pint;
}
else CurrentMemory +=sizeof(*pint);

строго не судите, но возможно так
Спасибо конечно, но я пока-что остановился на этом
Код:
void* operator new (std::size_t size) {
    /*
    тут проверка - не превысется ли лимит... при malloc
    */
    void* mem = std::malloc(size);
    if (!mem)
        ail::fatal_error("\n[ALLOCATING FAILED]\n");
    return mem;
}

void operator delete (void* mem) {
    std::free(mem);
}

void* operator new[] (std::size_t size) {
    /*
    тут проверка - не превысется ли лимит... при malloc
    */
    void* mem = std::malloc(size);
    if (!mem)
        ail::fatal_error("\n[ALLOCATING FAILED]\n");
    return mem;
}

void operator delete[] (void* mem) {
    std::free(mem);
}
т.б. глобально перегрузил операторы.

Последний раз редактировалось rudvil; 01.04.2010 в 23:53..
 
Ответить с цитированием

  #6  
Старый 02.04.2010, 18:46
SeNaP
Участник форума
Регистрация: 07.08.2008
Сообщений: 281
С нами: 9347610

Репутация: 165
По умолчанию

Начал изучать C++, но возник вопрос при запуске программ под Ubuntu.
В книге приведены примеры для среды Windows.
Код:
#include <cstdio>
#include <cstdlib>
#include<iostream>
using namespace std;
int main(int nNumberofArgs, char* pszArgs[])
{
int celsius;
cout << "Введите температуру в грудасах Цельсия";
...
...
}
Какие нужно директивы подключать?
 
Ответить с цитированием

  #7  
Старый 02.04.2010, 19:00
Ins3t
Участник форума
Регистрация: 18.07.2009
Сообщений: 272
С нами: 8850336

Репутация: 330
По умолчанию

Никакие, компилируй в линуксе:
Код:
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
#include <cstdio>
#include <cstdlib>
#include <iostream>
using namespace std;
//////////////////////////////////////////////////////////////////////////
int main(int nNumberofArgs, char* pszArgs[])
	{
	int celsius;
	cout << "Введите температуру в грудасах Цельсия";
...
...
	}
//////////////////////////////////////////////////////////////////////////
Цитата:
g++ main.cpp -o program

Последний раз редактировалось Ins3t; 05.04.2010 в 20:24..
 
Ответить с цитированием

  #8  
Старый 02.04.2010, 20:31
rudvil
Участник форума
Регистрация: 25.08.2008
Сообщений: 187
С нами: 9320830

Репутация: 86
По умолчанию

Код:
void operator delete (void* mem) {
    std::free(mem);
}
void operator delete[] (void* mem) {
    std::free(mem);
}
Как можно узнать сколько байт в памяти занимает "mem"?
если это вообще реально...

Поясню, при выделении памяти с помощью
Код:
void* operator new (std::size_t size) {
    usedMemory += size;
    void* mem = std::malloc(size);
    if (!mem)
        ail::fatal_error("\n[ALLOCATING FAILED]\n");
    return mem;
}
все просто - мы уже получаем размер выделяемой памяти, собственно хочется так же узнать сколько памяти удаляется при вызове delete или delete[], чтобы уменьшить счетчик используемой памяти...
 
Ответить с цитированием

  #9  
Старый 09.04.2010, 23:21
rudvil
Участник форума
Регистрация: 25.08.2008
Сообщений: 187
С нами: 9320830

Репутация: 86
По умолчанию

Цитата:
Сообщение от rudvil  
Код:
void operator delete (void* mem) {
    std::free(mem);
}
void operator delete[] (void* mem) {
    std::free(mem);
}
Как можно узнать сколько байт в памяти занимает "mem"?
если это вообще реально...

Поясню, при выделении памяти с помощью
Код:
void* operator new (std::size_t size) {
    usedMemory += size;
    void* mem = std::malloc(size);
    if (!mem)
        ail::fatal_error("\n[ALLOCATING FAILED]\n");
    return mem;
}
все просто - мы уже получаем размер выделяемой памяти, собственно хочется так же узнать сколько памяти удаляется при вызове delete или delete[], чтобы уменьшить счетчик используемой памяти...
Мб пригодится
Код:
void* operator new (std::size_t size) {
    if (currentMemory + size >= maxMemory)
        fatal_error("REACHED MEMORY LIMIT, EXITING..");
    currentMemory += size;
    void* ptr = std::malloc(size + sizeof(std::size_t));
    if (ptr == NULL)
        fatal_error("new - MALLOC FAIL\n");
    *(std::size_t*)ptr = size;
    return ((std::size_t*)ptr) + 1;
}

void operator delete (void* ptr) {
    std::size_t size = (*(((std::size_t*)ptr) - 1));
    currentMemory -= size;
    ptr = (void*)(((std::size_t*)ptr) - 1);
    std::free(ptr);
}

void* operator new[] (std::size_t size) {
    if (currentMemory + size >= maxMemory)
        fatal_error("REACHED MEMORY LIMIT, EXITING..");
    currentMemory += size;
    void* ptr = std::malloc(size + sizeof(std::size_t));
    if (ptr == NULL)
        fatal_error("new[] - MALLOC FAIL\n");
    *(std::size_t*)ptr = size;
    return ((std::size_t*)ptr) + 1;
}

void operator delete[] (void* ptr) {
    std::size_t size = (*(((std::size_t*)ptr) - 1));
    currentMemory -= size;
    ptr = (void*)(((std::size_t*)ptr) - 1);
    std::free(ptr);
}
т.б. в выделяемый блок памяти добавляем сигнатуру, в которой хранится размер выделенного блока.
 
Ответить с цитированием

  #10  
Старый 02.04.2010, 20:28
transserg
Участник форума
Регистрация: 02.07.2008
Сообщений: 132
С нами: 9399214

Репутация: 52
По умолчанию

возник вопрос... если я компилю проект с ключем
Код:
#pragma comment(linker, "/NODEFAULTLIB")
то естественно неработают такие функции как memcpy memcat memmove
чем их заменить и как работать тогда с памятью выделать перемещать копировать?
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Часто задаваемые вопросы по MySQL Серый PHP 5 28.12.2006 18:26
Интернетчики задали российскому президенту очень странные вопросы podkashey Мировые новости. Обсуждения. 4 07.07.2006 16:53
Вопросы по Ipb 2.0 Voodoo_People Уязвимости CMS / форумов 26 15.02.2005 22:57



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT ™ © 2001- Antichat Kft.