[c++] fopen tip

Atunci cand se aglomereaza mai multe buguri…. se produce o crapaciune ( crash :) ), in rest exista doar noroc.

Acum, am dat de un bug foarte subtil ( care, la mine, se reproduce in combinatie cu alt bug :) ).

Sa exemplific prin cod:

  char *filename = "test.txt";
  FILE* file = fopen( filename, "w" );
  fclose( file );
  /* some code */

Ideea e ca functia fopen poate esua si astfel variabila “file” se seteaza cu NULL si in continuare pasand variabila “file” cu valoare NULL functiei fclose duce la o crapaciune foarte urata… ceea ce ar fi bine de evitat

Corect ar fi :

  char *filename = "test.txt";
  FILE* file = fopen( filename, "w" );
  if ( file )
    fclose( file );
  /* some code */

enjoy.

vs2008 c++ linker crash

Atunci cand proiectele de Visual Studio sunt buildate cu parametrul “/INCREMENTAL”, poate aparea mesajul de eroare : “LNK1000: Internal error during IncrBuildImage” si respectiv crapa linkerul.

output gen :

2>LINK : fatal error LNK1000: Internal error during IncrBuildImage
2> Version 9.00.21022.08
2> ExceptionCode            = C0000005
2> ExceptionFlags         = 00000000
2> ExceptionAddress         = 0110FCF7 (01090000) "C:\Program Files\Microsoft Visual Studio 9.0\VC\bin\link.exe"
2> NumberParameters         = 00000002
2> ExceptionInformation[ 0] = 00000000
2> ExceptionInformation[ 1] = 00F1D670
2>CONTEXT:
2> Eax    = 40959D10 Esp    = 0025F2BC
2> Ebx    = 4000823C Ebp    = 0025F2E4
2> Ecx    = 00F1D670 Esi    = 40959B68
2> Edx    = 0025F2D4 Edi    = 0109D6C0
2> Eip    = 0110FCF7 EFlags = 00010246
2> SegCs = 0000001B SegDs = 00000023
2> SegSs = 00000023 SegEs = 00000023
2> SegFs = 0000003B SegGs = 00000000
2> Dr0    = 00000000 Dr3    = 00000000
2> Dr1    = 00000000 Dr6    = 00000000
2> Dr2    = 00000000 Dr7    = 00000000

Rezolvarea acestui bug se face cu un fix de la microsoft . Copiati un executabil si il instalati. Mai departe o sa mearga mai bine.