Simple programa super pesadoo!?? porq??

Iniciado por x64core, 20 Agosto 2011, 02:15 AM

0 Miembros y 1 Visitante están viendo este tema.

x64core

buenas gente TENGO UNA GRAN INCOGNITA y quiero que me saqueis de ella
y no e podido ni hacer nada tranquilo por pensar en ello
estuve estudiando un manual de programacion y vi un codigo que era para saber el tamaño de las variables de tu ordenador y lo pege en DEVc++
y lo compile y ejecute y funciono perfecto y para mi sorpresa cuando vi el tamaño del programa me quede sorprendido pesa 465KB!!!!!! señores porq pesa demasiado!!!
adonde esta el poder de C++ ???? O.o
alguien me puede explicar
este es el codigo:

Código (c++) [Seleccionar]
#include <cstdlib>
#include <iostream>


int main(int argc, char *argv[])
{
cout << "Tamaño de char: " << sizeof(char) << " bytes" << endl;
cout << "Tamaño de int: " << sizeof(int) << " bytes" << endl;
cout << "Tamaño de float: " << sizeof(float) << " bytes" <<endl;
cout << "Tamaño de double: " << sizeof(double) << " bytes" << endl;

    system("PAUSE");
    return EXIT_SUCCESS;
}

rir3760

El problema se debe a que la biblioteca estándar de C++ (para ser exactos las facilidades cortesia de <iostream>) se vincula estaticamente con el ejecutable.

Una explicación mas detallada del tema la puedes encontrar en la FAQ de C++ en ingles (utiliza Google). También puedes utilizar el motor de búsqueda de estos foros para revisar temas sobre la creación de ejecutables pequeños pero, si recuerdo bien, la mayoría están enfocados en (compiladores en Win32 de) C.

Un saludo
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language

BlackZeroX

.
ammm ANSI C es mas liviano y rapido de alguna manera.



#include <stdio.h>
#include <stdlib.h>

int main() //(int argc, char *argv[])
{
    fprintf(stdout, "Tamaño de char: %d\n", sizeof(int));
    fprintf(stdout, "Tamaño de int: %d\n", sizeof(int));
    fprintf(stdout, "Tamaño de float: %d\n", sizeof(float));
    fprintf(stdout, "Tamaño de double: %d\n", sizeof(double));
    //fflush(stdout);
    getchar();
    return EXIT_SUCCESS;
}



Temibles Lunas!¡.
The Dark Shadow is my passion.

x64core

#3
vale tio yo ce que no so programador ce c++ pero estoy leendo el manual interaccion c++ y vb6 :P y llege a esa parte pero me dio curiosidad de saber porq pasa eso alguna explicacion debe de ser :P gracias a los dos :)

PD:

busque en el foro y encontre un usuario que tenia la misma duda :P lo que le recomendaron fue que lo comprimiera con upx :xD :P

BlackZeroX

#4
.
Son debido a los TLB o algo asi, habria que RECREAR algunos codigos pero antes se le informaria al compilador que no ocupe los TLB predeterminados, algo asi era. me lo lei hace tiempo, llegue a compilar un exe de tan solo 500 bytes... en google hay algo de informacion.

Para crear una interaccion vb6 c/c++ bajate CodeBlocks, y crea un proyecto Shared Library... o mirate este post donde hago una interaccion entre los dos, te van a hacer falta conocimientos de las estructuras basicas que manera vb6 a nivel memoria solo para las strings.

http://foro.elhacker.net/programacion_cc/cisnumeric_vb6_a_c-t336564.0.html

En ese post deje un proyecto donde creo una dll para manejarla como API en vb6... el proyecto de la dll esta en C <--- te recomiendo Codeblocks para compilarlo.

lo del tamaño del compilado:

http://foro.elhacker.net/programacion_cc/reducir_mas_el_tamano-t254118.0.html

Dulces Lunas!¡.
The Dark Shadow is my passion.

x64core

gracias blackzero :) una duda :P parece que el tiene la version en español del vc yo me e matado buscando la version en español y solo ingles e econtrado :P

BlackZeroX

#6
.
Ni idea yo uso el IDE CodeBlocks con el compilador predeterminado.

Dulces Lunas!¡.
The Dark Shadow is my passion.

pucheto

Estas compilando como release ? Pq sino te lo llena de info de debug.

x64core

noce que es eso tio :P es que yo no soy programador c++ yo programo en vb :P
estaba viendo como hacer una interaccion de vb y c++ por eso y compile un ejemplo y me dio la curiosidad esa :P

Khronos14

Raul100 bájate el Visual C++ Express Edition. No hay mejor compilador de C++ para Windows, además es gratuito. Ahí si que no tienes el problema de la librería <iostream>.

Saludos.