亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? util.c

?? Trolltech公司發(fā)布的基于C++圖形開發(fā)環(huán)境
?? C
?? 第 1 頁 / 共 3 頁
字號(hào):
/*** 2001 September 15**** The author disclaims copyright to this source code.  In place of** a legal notice, here is a blessing:****    May you do good and not evil.**    May you find forgiveness for yourself and forgive others.**    May you share freely, never taking more than you give.***************************************************************************** Utility functions used throughout sqlite.**** This file contains functions for allocating memory, comparing** strings, and stuff like that.**** $Id: qt/util.c   3.3.4   edited Mar 30 2004 $*/#include "sqliteInt.h"#include <stdarg.h>#include <ctype.h>/*** If malloc() ever fails, this global variable gets set to 1.** This causes the library to abort and never again function.*/int sqlite_malloc_failed = 0;/*** If MEMORY_DEBUG is defined, then use versions of malloc() and** free() that track memory usage and check for buffer overruns.*/#ifdef MEMORY_DEBUG/*** For keeping track of the number of mallocs and frees.   This** is used to check for memory leaks.*/int sqlite_nMalloc;         /* Number of sqliteMalloc() calls */int sqlite_nFree;           /* Number of sqliteFree() calls */int sqlite_iMallocFail;     /* Fail sqliteMalloc() after this many calls */#if MEMORY_DEBUG>1static int memcnt = 0;#endif/*** Number of 32-bit guard words*/#define N_GUARD 1/*** Allocate new memory and set it to zero.  Return NULL if** no memory is available.*/void *sqliteMalloc_(int n, int bZero, char *zFile, int line){  void *p;  int *pi;  int i, k;  if( sqlite_iMallocFail>=0 ){    sqlite_iMallocFail--;    if( sqlite_iMallocFail==0 ){      sqlite_malloc_failed++;#if MEMORY_DEBUG>1      fprintf(stderr,"**** failed to allocate %d bytes at %s:%d\n",              n, zFile,line);#endif      sqlite_iMallocFail--;      return 0;    }  }  if( n==0 ) return 0;  k = (n+sizeof(int)-1)/sizeof(int);  pi = malloc( (N_GUARD*2+1+k)*sizeof(int));  if( pi==0 ){    sqlite_malloc_failed++;    return 0;  }  sqlite_nMalloc++;  for(i=0; i<N_GUARD; i++) pi[i] = 0xdead1122;  pi[N_GUARD] = n;  for(i=0; i<N_GUARD; i++) pi[k+1+N_GUARD+i] = 0xdead3344;  p = &pi[N_GUARD+1];  memset(p, bZero==0, n);#if MEMORY_DEBUG>1  fprintf(stderr,"%06d malloc %d bytes at 0x%x from %s:%d\n",      ++memcnt, n, (int)p, zFile,line);#endif  return p;}/*** Check to see if the given pointer was obtained from sqliteMalloc()** and is able to hold at least N bytes.  Raise an exception if this** is not the case.**** This routine is used for testing purposes only.*/void sqliteCheckMemory(void *p, int N){  int *pi = p;  int n, i, k;  pi -= N_GUARD+1;  for(i=0; i<N_GUARD; i++){    assert( pi[i]==0xdead1122 );  }  n = pi[N_GUARD];  assert( N>=0 && N<n );  k = (n+sizeof(int)-1)/sizeof(int);  for(i=0; i<N_GUARD; i++){    assert( pi[k+N_GUARD+1+i]==0xdead3344 );  }}/*** Free memory previously obtained from sqliteMalloc()*/void sqliteFree_(void *p, char *zFile, int line){  if( p ){    int *pi, i, k, n;    pi = p;    pi -= N_GUARD+1;    sqlite_nFree++;    for(i=0; i<N_GUARD; i++){      if( pi[i]!=0xdead1122 ){        fprintf(stderr,"Low-end memory corruption at 0x%x\n", (int)p);        return;      }    }    n = pi[N_GUARD];    k = (n+sizeof(int)-1)/sizeof(int);    for(i=0; i<N_GUARD; i++){      if( pi[k+N_GUARD+1+i]!=0xdead3344 ){        fprintf(stderr,"High-end memory corruption at 0x%x\n", (int)p);        return;      }    }    memset(pi, 0xff, (k+N_GUARD*2+1)*sizeof(int));#if MEMORY_DEBUG>1    fprintf(stderr,"%06d free %d bytes at 0x%x from %s:%d\n",         ++memcnt, n, (int)p, zFile,line);#endif    free(pi);  }}/*** Resize a prior allocation.  If p==0, then this routine** works just like sqliteMalloc().  If n==0, then this routine** works just like sqliteFree().*/void *sqliteRealloc_(void *oldP, int n, char *zFile, int line){  int *oldPi, *pi, i, k, oldN, oldK;  void *p;  if( oldP==0 ){    return sqliteMalloc_(n,1,zFile,line);  }  if( n==0 ){    sqliteFree_(oldP,zFile,line);    return 0;  }  oldPi = oldP;  oldPi -= N_GUARD+1;  if( oldPi[0]!=0xdead1122 ){    fprintf(stderr,"Low-end memory corruption in realloc at 0x%x\n", (int)oldP);    return 0;  }  oldN = oldPi[N_GUARD];  oldK = (oldN+sizeof(int)-1)/sizeof(int);  for(i=0; i<N_GUARD; i++){    if( oldPi[oldK+N_GUARD+1+i]!=0xdead3344 ){      fprintf(stderr,"High-end memory corruption in realloc at 0x%x\n",              (int)oldP);      return 0;    }  }  k = (n + sizeof(int) - 1)/sizeof(int);  pi = malloc( (k+N_GUARD*2+1)*sizeof(int) );  if( pi==0 ){    sqlite_malloc_failed++;    return 0;  }  for(i=0; i<N_GUARD; i++) pi[i] = 0xdead1122;  pi[N_GUARD] = n;  for(i=0; i<N_GUARD; i++) pi[k+N_GUARD+1+i] = 0xdead3344;  p = &pi[N_GUARD+1];  memcpy(p, oldP, n>oldN ? oldN : n);  if( n>oldN ){    memset(&((char*)p)[oldN], 0, n-oldN);  }  memset(oldPi, 0xab, (oldK+N_GUARD+2)*sizeof(int));  free(oldPi);#if MEMORY_DEBUG>1  fprintf(stderr,"%06d realloc %d to %d bytes at 0x%x to 0x%x at %s:%d\n",    ++memcnt, oldN, n, (int)oldP, (int)p, zFile, line);#endif  return p;}/*** Make a duplicate of a string into memory obtained from malloc()** Free the original string using sqliteFree().**** This routine is called on all strings that are passed outside of** the SQLite library.  That way clients can free the string using free()** rather than having to call sqliteFree().*/void sqliteStrRealloc(char **pz){  char *zNew;  if( pz==0 || *pz==0 ) return;  zNew = malloc( strlen(*pz) + 1 );  if( zNew==0 ){    sqlite_malloc_failed++;    sqliteFree(*pz);    *pz = 0;  }  strcpy(zNew, *pz);  sqliteFree(*pz);  *pz = zNew;}/*** Make a copy of a string in memory obtained from sqliteMalloc()*/char *sqliteStrDup_(const char *z, char *zFile, int line){  char *zNew;  if( z==0 ) return 0;  zNew = sqliteMalloc_(strlen(z)+1, 0, zFile, line);  if( zNew ) strcpy(zNew, z);  return zNew;}char *sqliteStrNDup_(const char *z, int n, char *zFile, int line){  char *zNew;  if( z==0 ) return 0;  zNew = sqliteMalloc_(n+1, 0, zFile, line);  if( zNew ){    memcpy(zNew, z, n);    zNew[n] = 0;  }  return zNew;}#endif /* MEMORY_DEBUG *//*** The following versions of malloc() and free() are for use in a** normal build.*/#if !defined(MEMORY_DEBUG)/*** Allocate new memory and set it to zero.  Return NULL if** no memory is available.  See also sqliteMallocRaw().*/void *sqliteMalloc(int n){  void *p;  if( (p = malloc(n))==0 ){    if( n>0 ) sqlite_malloc_failed++;  }else{    memset(p, 0, n);  }  return p;}/*** Allocate new memory but do not set it to zero.  Return NULL if** no memory is available.  See also sqliteMalloc().*/void *sqliteMallocRaw(int n){  void *p;  if( (p = malloc(n))==0 ){    if( n>0 ) sqlite_malloc_failed++;  }  return p;}/*** Free memory previously obtained from sqliteMalloc()*/void sqliteFree(void *p){  if( p ){    free(p);  }}/*** Resize a prior allocation.  If p==0, then this routine** works just like sqliteMalloc().  If n==0, then this routine** works just like sqliteFree().*/void *sqliteRealloc(void *p, int n){  void *p2;  if( p==0 ){    return sqliteMalloc(n);  }  if( n==0 ){    sqliteFree(p);    return 0;  }  p2 = realloc(p, n);  if( p2==0 ){    sqlite_malloc_failed++;  }  return p2;}/*** Make a copy of a string in memory obtained from sqliteMalloc()*/char *sqliteStrDup(const char *z){  char *zNew;  if( z==0 ) return 0;  zNew = sqliteMallocRaw(strlen(z)+1);  if( zNew ) strcpy(zNew, z);  return zNew;}char *sqliteStrNDup(const char *z, int n){  char *zNew;  if( z==0 ) return 0;  zNew = sqliteMallocRaw(n+1);  if( zNew ){    memcpy(zNew, z, n);    zNew[n] = 0;  }  return zNew;}#endif /* !defined(MEMORY_DEBUG) *//*** Create a string from the 2nd and subsequent arguments (up to the** first NULL argument), store the string in memory obtained from** sqliteMalloc() and make the pointer indicated by the 1st argument** point to that string.  The 1st argument must either be NULL or ** point to memory obtained from sqliteMalloc().*/void sqliteSetString(char **pz, const char *zFirst, ...){  va_list ap;  int nByte;  const char *z;  char *zResult;  if( pz==0 ) return;  nByte = strlen(zFirst) + 1;  va_start(ap, zFirst);  while( (z = va_arg(ap, const char*))!=0 ){    nByte += strlen(z);  }  va_end(ap);  sqliteFree(*pz);  *pz = zResult = sqliteMallocRaw( nByte );  if( zResult==0 ){    return;  }  strcpy(zResult, zFirst);  zResult += strlen(zResult);  va_start(ap, zFirst);  while( (z = va_arg(ap, const char*))!=0 ){    strcpy(zResult, z);    zResult += strlen(zResult);  }  va_end(ap);#ifdef MEMORY_DEBUG#if MEMORY_DEBUG>1  fprintf(stderr,"string at 0x%x is %s\n", (int)*pz, *pz);#endif#endif}/*** Works like sqliteSetString, but each string is now followed by** a length integer which specifies how much of the source string ** to copy (in bytes).  -1 means use the whole string.  The 1st ** argument must either be NULL or point to memory obtained from ** sqliteMalloc().*/void sqliteSetNString(char **pz, ...){  va_list ap;  int nByte;  const char *z;  char *zResult;  int n;

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91尤物视频在线观看| 一区二区三区日韩精品视频| 美女任你摸久久| 91精品国产综合久久久蜜臀粉嫩| 亚洲mv大片欧洲mv大片精品| 欧美日韩久久一区二区| 天天综合天天做天天综合| 91精品国产91久久综合桃花 | 中文字幕中文字幕一区| 成人成人成人在线视频| 伊人夜夜躁av伊人久久| 欧美日韩一级二级三级| 蜜桃视频在线观看一区| 欧美韩国日本综合| 91国偷自产一区二区使用方法| 偷拍与自拍一区| 欧美精品一区二区三区四区| 丁香激情综合国产| 亚洲国产毛片aaaaa无费看| 日韩精品中文字幕一区二区三区 | 欧美日韩黄色影视| 久久国产精品72免费观看| 欧美国产综合色视频| 91成人国产精品| 久久激情五月激情| 国产精品电影院| 69堂国产成人免费视频| 国产91在线观看丝袜| 午夜精品久久久久久久久久| 国产女人18毛片水真多成人如厕| 在线观看视频欧美| 国产精品亚洲第一| 天天综合色天天综合色h| 日本一区二区三区在线不卡| 欧美日本免费一区二区三区| 国产成人精品1024| 人人精品人人爱| 日韩理论片在线| 久久伊人中文字幕| 欧美中文一区二区三区| 国产精品资源网| 午夜久久久久久久久| 国产精品免费看片| 欧美tk—视频vk| 欧美日本一区二区三区四区 | 亚洲色图欧洲色图| 精品国产自在久精品国产| 在线精品国精品国产尤物884a| 国产精品亚洲第一区在线暖暖韩国| 亚洲一区影音先锋| 中文字幕高清不卡| 日韩一区二区电影在线| 欧美日韩中文另类| www.亚洲精品| 国产伦精品一区二区三区免费迷| 天天亚洲美女在线视频| 一二三四社区欧美黄| 国产精品电影院| 中文av一区特黄| 久久亚洲综合色一区二区三区| 欧美人与性动xxxx| 欧美成人精品1314www| 欧美日本视频在线| 欧美午夜精品久久久久久超碰| 9久草视频在线视频精品| 国产99久久久国产精品潘金| 国产一区久久久| 国产一区二区美女| 国产在线播放一区三区四| 免费国产亚洲视频| 日韩高清不卡一区二区| 日韩激情一区二区| 午夜在线电影亚洲一区| 亚洲国产你懂的| 五月激情综合色| 日韩成人午夜精品| 日韩电影在线一区二区三区| 日韩综合一区二区| 日韩国产一区二| 日韩成人一区二区| 精品一区二区三区影院在线午夜| 免费人成网站在线观看欧美高清| 麻豆精品精品国产自在97香蕉| 毛片av中文字幕一区二区| 久久99国产精品久久99| 狠狠色丁香久久婷婷综合丁香| 狠狠色综合播放一区二区| 国产精品自拍毛片| 99久久伊人网影院| 99久久精品一区二区| 91成人免费在线| 欧美日本一区二区在线观看| 欧美大胆一级视频| 欧美激情一区二区三区在线| 亚洲色图第一区| 一区二区免费看| 日产国产欧美视频一区精品| 久久不见久久见中文字幕免费| 国产一区二区三区观看| caoporm超碰国产精品| 欧美影院精品一区| 欧美成人三级电影在线| 中文字幕高清不卡| 亚洲国产日产av| 国产老肥熟一区二区三区| 91女人视频在线观看| 欧美浪妇xxxx高跟鞋交| 精品国产区一区| 最新国产精品久久精品| 亚洲成人av在线电影| 久久99热99| 91污在线观看| 日韩午夜电影在线观看| 中文字幕一区二区不卡| 婷婷开心久久网| 福利电影一区二区三区| 欧美放荡的少妇| 国产精品视频一区二区三区不卡 | 日本网站在线观看一区二区三区| 激情亚洲综合在线| 一本久道久久综合中文字幕| 日韩欧美高清一区| 亚洲色图欧美激情| 精品一区二区三区日韩| 欧美专区亚洲专区| 久久综合狠狠综合久久综合88| 亚洲激情男女视频| 精品中文字幕一区二区| 欧美亚洲一区二区在线观看| 国产拍欧美日韩视频二区| 天堂久久一区二区三区| 成人ar影院免费观看视频| 日韩视频免费观看高清完整版在线观看| 国产精品久久久久久久久久免费看 | 国产成人aaa| 7777精品伊人久久久大香线蕉 | 中文字幕五月欧美| 久久99国产精品久久| 欧美日韩电影一区| 国产精品久久久久影视| 激情欧美一区二区| 欧美欧美欧美欧美| 亚洲精品乱码久久久久久黑人 | 99久久免费精品| 国产欧美1区2区3区| 狠狠色丁香久久婷婷综合_中| 欧美麻豆精品久久久久久| 亚洲精选免费视频| av影院午夜一区| 亚洲国产高清在线观看视频| 久久精品国产亚洲高清剧情介绍 | 日韩av网站免费在线| 91在线看国产| 国产精品国产a| 高清视频一区二区| 精品电影一区二区| 日韩av二区在线播放| 欧美日韩精品免费观看视频| 亚洲精品视频免费观看| av亚洲精华国产精华| 中文字幕一区二区三中文字幕| 成人黄色软件下载| 国产精品国产三级国产aⅴ中文| 成人黄页毛片网站| 中文字幕一区二区三区四区不卡| 国产东北露脸精品视频| 国产日韩欧美制服另类| 豆国产96在线|亚洲| 国产精品久久久久久久浪潮网站| 懂色av中文字幕一区二区三区| 中文无字幕一区二区三区 | 在线观看av一区| 一区二区三区不卡在线观看| 在线观看不卡视频| 午夜精品在线看| 91精品在线麻豆| 精品系列免费在线观看| xnxx国产精品| 成人性生交大片免费看在线播放| 国产精品理论片| 欧美亚洲一区二区在线| 日本成人中文字幕在线视频 | 国产午夜精品福利| 成人黄色av电影| 亚洲一区二区三区中文字幕| 欧美高清你懂得| 久草热8精品视频在线观看| 久久综合久久鬼色中文字| 国产一区二区精品久久91| 国产精品成人一区二区艾草| 欧美日韩在线电影| 久久99热狠狠色一区二区| 国产欧美日韩三区| 欧美在线观看你懂的| 蜜臀av亚洲一区中文字幕| 日本一区二区成人在线| 欧美三级视频在线观看| 精一区二区三区| 亚洲人妖av一区二区| 制服丝袜亚洲网站|