Dr Brain wrote: |
When using C++, you should really only be using new to dynamicly allocate. |
Dr Brain wrote: |
In C++, you shouldn't be using raw data ![]() |
Dr Brain wrote: |
In C++, you shouldn't be using raw data [...]Unless of course, you know what you're doing. At which point you are no longer asking questions on a forum. |
Code: Show/Hide int deflate_file(unsigned char *in, int length, FILE *out)
{ z_stream strm; //see zlib.h Bytef compressed[PERL_BUFF]; //This holds our compressed data until we write it. int code; //holds return values from zlib functions // Initialize the stream strm.zalloc = (alloc_func)Z_NULL; strm.zfree = (free_func)Z_NULL; strm.next_in = in; strm.avail_in = length; code = deflateInit2(&strm, -1, Z_DEFLATED, -15, 9, Z_DEFAULT_STRATEGY); // Deflate it while (code == Z_OK) { strm.next_out = compressed; strm.avail_out = PERL_BUFF; code = deflate(&strm, Z_FINISH); if (code == Z_OK || code == Z_STREAM_END) fwrite(compressed, sizeof(Bytef), PERL_BUFF - strm.avail_out, out); } // Cleanup & Return deflateEnd(&strm); switch (code) { //blah blah blah } return code; } |
Mr Ekted wrote: |
[..]
In C++ you shouldn't be OOP-ing the shit out of everything. A struct is still a stuct. Don't make classes (with constructors, destructors, and lots of virtual funcs) out of every little thing. |
Mr Ekted wrote: |
In C++ you shouldn't be OOP-ing the shit out of everything. A struct is still a stuct. Don't make classes (with constructors, destructors, and lots of virtual funcs) out of every little thing. |
Code: Show/Hide char *p = (char *) malloc(10); |
Dr Brain wrote: |
Why not? Obviously you don't need virtual functions or destructors, but a constructor that sets all of the public variables in the class would take about the same amount of machine code as a struct initialization. Constructors have the advantage of making the code much more readable. |
Mr Ekted wrote: |
OOP allows much more obfuscation. You can "hide" complex things in simple code, making it hard to figure out what's going on. |
D1st0rt wrote: |
If done correctly, though, it can be very efficient and simple to code, since a bunch of the hard stuff was worked out in the design |
Dr Brain wrote: |
Of course, it's still possible to write obscure code, but the compiler wont give up without a fight |
Code: Show/Hide #include <time.h>
#include <stdio.h> #include <stdlib.h> #define __ "Y\n : ! ,.?>" #define D(f) ; } int f(int i) { return #define E(a,b,c,d,e) b##d,c,e,a #define e(a,b,c,d) a##b##c##d #define B *p++ - ' ' || !p++ #define _(k) o(*#k - 64) #define G(g,l,k,o,e,d,n,c,i,b,a,f,j,m,p) \ a#b#c#d#e#f#g#a#i#j#k#l#m#n#o e,i l##c,m##b; d g j n h(k 30:1); o p f} G(E(f ( 9) -s ? -s + 'q' ? f( 5 ) -s &&'d' - s?U( 3 ) ||_(J) :A ( s- f( 5 )) :(c= 4 * 4): g(0)D( V)c <= 3 *4 + 3&&c && V(X ( i) ) ; } int , time ( 0)& , c - 15 || P (1 ):0, & ( !!d ( 0 ) ||(a=! _(S)) ,b= 0 )|| a ?d(a = 0) ? _ (I): w ( j =!W(j=_ (V ))) , l(_ (Y+ s ) ) )e ( main(){; ;;;s , ra, n, d), && C ( j +R( s-j+t( i- 1) ) )D( W)m[ c* 4| z( j ) ] &&_( X )E (d ( 0 )&& R( 6)/ 6 ? c= 17|_ ( T ) :01,||+ , v =i & 3 ^ 2 ,+j & 3&&W ( j)||y ( 10 )D (k) -- j ? k ( O[j]=R(15 )) : 1 D ( H )o ( 7+! ! i+3 )+ i? c=i /4 & 63, a= 1 :0) D ( f )( p =M ,q ( i),*p+86) D ( l) * f, B? B ?B ?B? B ?B ?B ?7 :B?B ?36: 59 * 89 *5 * 2 :B?6587 *77 :9 + 2:B ?B?B?9: 5 : 37 : B ? 5 +5:4:20: B?B?B?32 :e( 4, 3 , 1 *4 * 59 * 1 , 7):B? 17: 34 : 19 :B ? 8 *2 :B ? 2:26: B? B?B ?B ? 82 *+ 576: B ?33 :22 :5 * 5:3 *4 :3:B ?B ?B? B ?6 + + 17 : B?B?13:6 : 9 *2:B?15 : 7 *2 : B ? B ? 27:24: 31 : B? B? + 29 :, m [a^ 2 ] =T( 8 * 7) ;j= 3 ; ; Q, ;int P ( int i ) {time_t(x ) =+ 0+ time(0) ; j=E( u (i ) : i D(R )e(r , a ,n ,d) ()% i+1, ( e( l , o, caltim , e ) (& x)) ->e( tm_h , o, u , r) ;retur , i?_( W ): _( U) D(Y) *p&& *p<3 * 11 ? ( ++ p ), n j= + 34 +( j< 6 ||j>19 ),Y (i) : *p D ( F) i == 9 ?1 : F( (i+ 7)% ( 7 + 3) ) +!O[ i ]D(u) *p &&* p -32? p ++) D (h ) i ?*++*S=i% ( 38)- 1, D ( A )! n?i&&!g ( (0 ) ) ||K ( j=4| ! !i ) : N(!i )D( Q)++j< (s ) &&Q ( t( i)^i ) D( U )i>= 0 ?U( i- 1 )||~f (i+1 ) == ~ s &&H (m[c* 4 |z(i)] ) :0;D ( X) + b && b<, for (*S = M ; * p; ), gets ( L, + 98 , stdin ) ? p= L, E (r( 0 ): 0 ,h( i / 38 ) : 0;D( C)! ( m[j]+m [a= i] ) ?m[j[m]= i]=j:0;D (d) ! b+(* O- c)* * O; D (z ) -~- ~ -~i + v & 3 D(y)( putchar ) ( i) D ( q ) i& ,!(O[j = i] || _ ( O))+a :0; D (w)O[ j] ==c && o (( !i ++ ? ! !_ (M ): 0) +15)|| ++ j<9 &&w ( i)D ( r )*p? *p -4? * p -6 ? y(*p <9 + 2?__[ * p ]: * p+ 7 +79):o( j+1) : o (26+j),&q ( -! * p ++ + i )D(x)i? a=x ( ( -- i)), ++ p ) D( t ) i, | C((j=i* T(i-4 )) +R (3 ) + 4 ) D(J) !j --E( 0 D ( K )!-!N, || i &, _( R ) :i* c== (O [ j ] ) &&n==f (j+ 6 + 5 * 4)?O [j]= !i * c-_ ( L) :J(i ) D ( N ) j=9, & d(0 )? j= 6 | ! i , J(i )D ( o)(*S = p , ++ S,p = M , r (q (i) ),-- S, p = *S)) ( (l (_ (Q )),n =s,i ^5 ) ) ;, E(j , sign , v ,ed ( b ) ;; int c =1 ,O[9]) ;int( s )= E (n ;char, 1 ,a,6 ,o ())* Z[ E(M [37 * 9 *3 ] ,0,L [ 99] ,3] , * *S=Z ) ; E (*p=+1 ,char( m)[6 , co , 4 ],ol) +, V ( v=*O = k( j= 9 )) ; return ! c&& - ~ ~ - -! printf ( ( "%d \n") , F (P ( 0) +6) *50 + ! ! b* ( +b - (int)time ( 0 )) ) ;, ( b= 60 + time ( 0)+ 60 * 4) ;, n =Y (u (s =Y (i) ) ) : (exit( 0) ,i)D( g )x ( _(N) ^ 9)? !( a =0) : _ ( P )D (T)! i|, (2); s=35; Q(3); s=59; Q(6); a=1; ) |
Dr Brain wrote: |
You think the compiler never complained to the programmer who wrote that? |
Cyan~Fire wrote: |
[..]
Well it didn't complain to me, so I don't see why it would've to him. And about your code, yes, I realize that it's quite fun and easy to obfuscate C code, but that wasn't my point. My point was, as I had said before, you shouldn't rely on the compiler to prevent it. A language is not better just because it has a "smarter" compiler or more rigid style control |