您当前的位置:首页 > IT编程 > C++
| C语言 | Java | VB | VC | python | Android | TensorFlow | C++ | oracle | 学术与代码 | cnn卷积神经网络 | gnn | 图像修复 | Keras | 数据集 | Neo4j | 自然语言处理 | 深度学习 | 医学CAD | 医学影像 | 超参数 | pointnet | pytorch | 异常检测 | Transformers | 情感分类 | 知识图谱 |

自学教程:C++ xmlMutexUnlock函数代码示例

51自学网 2021-06-03 11:46:07
  C++
这篇教程C++ xmlMutexUnlock函数代码示例写得很实用,希望能帮到您。

本文整理汇总了C++中xmlMutexUnlock函数的典型用法代码示例。如果您正苦于以下问题:C++ xmlMutexUnlock函数的具体用法?C++ xmlMutexUnlock怎么用?C++ xmlMutexUnlock使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。

在下文中一共展示了xmlMutexUnlock函数的30个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。

示例1: savestatus

inline void savestatus() {	xmlNodePtr root = NULL;	xmlNodePtr node = NULL;	xmlChar* tmp = NULL;	if ((strlen(statname) > 0) && (status != NULL)) {		root = xmlDocGetRootElement(status);		if (root) {			xmlMutexLock(finishedMutex);			for (node = root->children; node; node = node->next) {				if (xmlStrcmp(node->name, "current") == 0) {					xmlMutexLock(pwdMutex);					tmp = xmlEncodeEntitiesReentrant(status, (const xmlChar*) &password);					xmlMutexUnlock(pwdMutex);					if (node->children) {					    if (password[0] == '/0')						xmlNodeSetContent(node->children, getfirstpassword());					    else						xmlNodeSetContent(node->children, tmp);					    }					xmlFree(tmp);				} else if ((finished == 1) && (xmlStrcmp(node->name,"good_password") == 0)) {					tmp =  xmlEncodeEntitiesReentrant(status, (const xmlChar*) &password_good);					if (node->children)						xmlNodeSetContent(node->children, tmp);					xmlFree(tmp);				}			}			xmlMutexUnlock(finishedMutex);		}		xmlSaveFormatFileEnc(statname, status, "UTF-8", 1);	}	return;}
开发者ID:Rudloff,项目名称:rarcrack-debian,代码行数:33,


示例2: crack_thread

void * crack_thread() {	char * current;	char ret[200];	char cmd[400];	FILE * Pipe;	while (1) {		current = nextpass();		sprintf((char*)&cmd, finalcmd, current, filename);		Pipe = popen(cmd, "r");		while (!feof(Pipe)) {		   fgets((char*)&ret, 200, Pipe);		   if (strcasestr(ret, "ok") != NULL) {			strcpy(password_good, current);			xmlMutexLock(finishedMutex);			finished = 1;			printf("GOOD: password cracked: '%s'/n", current);			xmlMutexUnlock(finishedMutex);			savestatus();			break;		   }		}		pclose(Pipe);		xmlMutexLock(finishedMutex);		counter++;		if (finished != 0) {			xmlMutexUnlock(finishedMutex);			break;		}		xmlMutexUnlock(finishedMutex);		free(current);	}}
开发者ID:Rudloff,项目名称:rarcrack-debian,代码行数:32,


示例3: xmlThrDefSetStructuredErrorFunc

voidxmlThrDefSetStructuredErrorFunc(void *ctx, xmlStructuredErrorFunc handler) {    xmlMutexLock(xmlThrDefMutex);    xmlGenericErrorContextThrDef = ctx;    xmlStructuredErrorThrDef = handler;    xmlMutexUnlock(xmlThrDefMutex);}
开发者ID:xuebai5,项目名称:TheNebulaDevice,代码行数:7,


示例4: xmlThrDefDoValidityCheckingDefaultValue

int xmlThrDefDoValidityCheckingDefaultValue(int v) {    int ret;    xmlMutexLock(xmlThrDefMutex);    ret = xmlDoValidityCheckingDefaultValueThrDef;    xmlDoValidityCheckingDefaultValueThrDef = v;    xmlMutexUnlock(xmlThrDefMutex);    return ret;}
开发者ID:Open-SFC,项目名称:ond-of-driver,代码行数:8,


示例5: xmlThrDefLoadExtDtdDefaultValue

int xmlThrDefLoadExtDtdDefaultValue(int v) {    int ret;    xmlMutexLock(xmlThrDefMutex);    ret = xmlLoadExtDtdDefaultValueThrDef;    xmlLoadExtDtdDefaultValueThrDef = v;    xmlMutexUnlock(xmlThrDefMutex);    return ret;}
开发者ID:Open-SFC,项目名称:ond-of-driver,代码行数:8,


示例6: xmlThrDefDefaultBufferSize

int xmlThrDefDefaultBufferSize(int v) {    int ret;    xmlMutexLock(xmlThrDefMutex);    ret = xmlDefaultBufferSizeThrDef;    xmlDefaultBufferSizeThrDef = v;    xmlMutexUnlock(xmlThrDefMutex);    return ret;}
开发者ID:xuebai5,项目名称:TheNebulaDevice,代码行数:8,


示例7: xmlThrDefBufferAllocScheme

xmlBufferAllocationScheme xmlThrDefBufferAllocScheme(xmlBufferAllocationScheme v) {    xmlBufferAllocationScheme ret;    xmlMutexLock(xmlThrDefMutex);    ret = xmlBufferAllocSchemeThrDef;    xmlBufferAllocSchemeThrDef = v;    xmlMutexUnlock(xmlThrDefMutex);    return ret;}
开发者ID:xuebai5,项目名称:TheNebulaDevice,代码行数:8,


示例8: xmlThrDefGetWarningsDefaultValue

int xmlThrDefGetWarningsDefaultValue(int v) {    int ret;    xmlMutexLock(xmlThrDefMutex);    ret = xmlGetWarningsDefaultValueThrDef;    xmlGetWarningsDefaultValueThrDef = v;    xmlMutexUnlock(xmlThrDefMutex);    return ret;}
开发者ID:Open-SFC,项目名称:ond-of-driver,代码行数:8,


示例9: xmlThrDefSubstituteEntitiesDefaultValue

int xmlThrDefSubstituteEntitiesDefaultValue(int v) {    int ret;    xmlMutexLock(xmlThrDefMutex);    ret = xmlSubstituteEntitiesDefaultValueThrDef;    xmlSubstituteEntitiesDefaultValueThrDef = v;    xmlMutexUnlock(xmlThrDefMutex);    return ret;}
开发者ID:Open-SFC,项目名称:ond-of-driver,代码行数:8,


示例10: xmlThrDefTreeIndentString

const char * xmlThrDefTreeIndentString(const char * v) {    const char * ret;    xmlMutexLock(xmlThrDefMutex);    ret = xmlTreeIndentStringThrDef;    xmlTreeIndentStringThrDef = v;    xmlMutexUnlock(xmlThrDefMutex);    return ret;}
开发者ID:Open-SFC,项目名称:ond-of-driver,代码行数:8,


示例11: status_thread

void * status_thread() {	int pwds;	const short status_sleep = 3;	while(1) {		sleep(status_sleep);		xmlMutexLock(finishedMutex);		pwds = counter / status_sleep;		counter = 0;		if (finished != 0)			break;		xmlMutexUnlock(finishedMutex);		xmlMutexLock(pwdMutex);		printf("Probing: '%s' [%d pwds/sec]/n", password, pwds);		xmlMutexUnlock(pwdMutex);		savestatus();	//FIXME: this is wrong, when probing current password(s) is(are) not finished yet, and the program is exiting	}}
开发者ID:Rudloff,项目名称:rarcrack-debian,代码行数:17,


示例12: nextpass

inline char* nextpass() {	//IMPORTANT: the returned string must be freed   char *ok = malloc(sizeof(char)*(PWD_LEN+1));   xmlMutexLock(pwdMutex);   strcpy(ok, password);   nextpass2((char*) &password, curr_len - 1);   xmlMutexUnlock(pwdMutex);   return ok;}
开发者ID:Rudloff,项目名称:rarcrack-debian,代码行数:8,


示例13: xmlThrDefKeepBlanksDefaultValue

int xmlThrDefKeepBlanksDefaultValue(int v) {    int ret;    xmlMutexLock(xmlThrDefMutex);    ret = xmlKeepBlanksDefaultValueThrDef;    xmlKeepBlanksDefaultValueThrDef = v;    xmlMutexUnlock(xmlThrDefMutex);    return ret;}
开发者ID:Open-SFC,项目名称:ond-of-driver,代码行数:8,


示例14: xmlThrDefLineNumbersDefaultValue

int xmlThrDefLineNumbersDefaultValue(int v) {    int ret;    xmlMutexLock(xmlThrDefMutex);    ret = xmlLineNumbersDefaultValueThrDef;    xmlLineNumbersDefaultValueThrDef = v;    xmlMutexUnlock(xmlThrDefMutex);    return ret;}
开发者ID:Open-SFC,项目名称:ond-of-driver,代码行数:8,


示例15: xmlThrDefPedanticParserDefaultValue

int xmlThrDefPedanticParserDefaultValue(int v) {    int ret;    xmlMutexLock(xmlThrDefMutex);    ret = xmlPedanticParserDefaultValueThrDef;    xmlPedanticParserDefaultValueThrDef = v;    xmlMutexUnlock(xmlThrDefMutex);    return ret;}
开发者ID:Open-SFC,项目名称:ond-of-driver,代码行数:8,


示例16: xmlThrDefIndentTreeOutput

int xmlThrDefIndentTreeOutput(int v) {    int ret;    xmlMutexLock(xmlThrDefMutex);    ret = xmlIndentTreeOutputThrDef;    xmlIndentTreeOutputThrDef = v;    xmlMutexUnlock(xmlThrDefMutex);    return ret;}
开发者ID:Open-SFC,项目名称:ond-of-driver,代码行数:8,


示例17: xmlThrDefSaveNoEmptyTags

int xmlThrDefSaveNoEmptyTags(int v) {    int ret;    xmlMutexLock(xmlThrDefMutex);    ret = xmlSaveNoEmptyTagsThrDef;    xmlSaveNoEmptyTagsThrDef = v;    xmlMutexUnlock(xmlThrDefMutex);    return ret;}
开发者ID:Open-SFC,项目名称:ond-of-driver,代码行数:8,


示例18: xmlThrDefParserDebugEntities

int xmlThrDefParserDebugEntities(int v) {    int ret;    xmlMutexLock(xmlThrDefMutex);    ret = xmlParserDebugEntitiesThrDef;    xmlParserDebugEntitiesThrDef = v;    xmlMutexUnlock(xmlThrDefMutex);    return ret;}
开发者ID:Open-SFC,项目名称:ond-of-driver,代码行数:8,


示例19: xmlMallocAtomicLoc

void *xmlMallocAtomicLoc(size_t size, const char * file, int line){  MEMHDR *p;  void *ret;  if (!xmlMemInitialized) xmlInitMemory();#ifdef DEBUG_MEMORY  xmlGenericError(xmlGenericErrorContext,                  "Malloc(%d)/n",size);#endif  TEST_POINT  p = (MEMHDR *) malloc(RESERVE_SIZE+size);  if (!p)  {    xmlGenericError(xmlGenericErrorContext,                    "xmlMallocLoc : Out of free space/n");    xmlMemoryDump();    return(NULL);  }  p->mh_tag = MEMTAG;  p->mh_size = size;  p->mh_type = MALLOC_ATOMIC_TYPE;  p->mh_file = file;  p->mh_line = line;  xmlMutexLock(xmlMemMutex);  p->mh_number = ++block;  debugMemSize += size;  debugMemBlocks++;  if (debugMemSize > debugMaxMemSize) debugMaxMemSize = debugMemSize;#ifdef MEM_LIST  debugmem_list_add(p);#endif  xmlMutexUnlock(xmlMemMutex);#ifdef DEBUG_MEMORY  xmlGenericError(xmlGenericErrorContext,                  "Malloc(%d) Ok/n",size);#endif  if (xmlMemStopAtBlock == p->mh_number) xmlMallocBreakpoint();  ret = HDR_2_CLIENT(p);  if (xmlMemTraceBlockAt == ret)  {    xmlGenericError(xmlGenericErrorContext,                    "%p : Malloc(%ld) Ok/n", xmlMemTraceBlockAt, (long)size);    xmlMallocBreakpoint();  }  TEST_POINT  return(ret);}
开发者ID:vgurev,项目名称:freesurfer,代码行数:58,


示例20: xmlMemBlocks

intxmlMemBlocks(void) {    int res;    xmlMutexLock(xmlMemMutex);    res = debugMemBlocks;    xmlMutexUnlock(xmlMemMutex);    return(res);}
开发者ID:BalajiB,项目名称:KitchenDrawer,代码行数:9,


示例21: xmlMemUsed

intxmlMemUsed(void) {    int res;    xmlMutexLock(xmlMemMutex);    res = debugMemSize;    xmlMutexUnlock(xmlMemMutex);    return(res);}
开发者ID:BalajiB,项目名称:KitchenDrawer,代码行数:9,


示例22: xmlMutexLock

bool House::save(){	xmlDocPtr doc;	xmlNodePtr root, tmp;	xmlMutexLock(xmlmutex);	doc = xmlNewDoc((const xmlChar*)"1.0");	doc->children = xmlNewDocNode(doc, NULL, (const xmlChar*)"house", NULL);    root = doc->children;	std::stringstream sb;	tmp = xmlNewNode(NULL, (const xmlChar*)"frontdoor");	sb << frontDoor.x; xmlSetProp(tmp, (const xmlChar*) "x", (const xmlChar*)sb.str().c_str()); sb.str("");	sb << frontDoor.y; xmlSetProp(tmp, (const xmlChar*) "y", (const xmlChar*)sb.str().c_str()); sb.str("");	sb << frontDoor.z; xmlSetProp(tmp, (const xmlChar*) "z", (const xmlChar*)sb.str().c_str()); sb.str("");	xmlAddChild(root, tmp);	tmp = xmlNewNode(NULL, (const xmlChar*)"owner");	xmlSetProp(tmp, (const xmlChar*)"name", (const xmlChar*)owner.c_str());	xmlAddChild(root, tmp);	for (size_t i = 0; i < subOwners.size(); i++)	{		tmp = xmlNewNode(NULL, (const xmlChar*)"subowner");		xmlSetProp(tmp, (const xmlChar*)"name", (const xmlChar*)subOwners[i].c_str());		xmlAddChild(root, tmp);	}	for (size_t i = 0; i < guests.size(); i++)	{		tmp = xmlNewNode(NULL, (const xmlChar*)"guest");		xmlSetProp(tmp, (const xmlChar*)"name", (const xmlChar*)guests[i].c_str());		xmlAddChild(root, tmp);	}	DoorOwnersMap::const_iterator iter = doorOwners.begin();	while (iter != doorOwners.end())	{		Position pos = iter->first;		for (size_t i = 0; i < iter->second.size(); i++)		{			tmp = xmlNewNode(NULL, (const xmlChar*)"doorowner");	// TODO: optimize			sb << pos.x; xmlSetProp(tmp, (const xmlChar*) "x", (const xmlChar*)sb.str().c_str()); sb.str("");			sb << pos.y; xmlSetProp(tmp, (const xmlChar*) "y", (const xmlChar*)sb.str().c_str()); sb.str("");			sb << pos.z; xmlSetProp(tmp, (const xmlChar*) "z", (const xmlChar*)sb.str().c_str()); sb.str("");			xmlSetProp(tmp, (const xmlChar*)"name", (const xmlChar*)iter->second[i].c_str());			xmlAddChild(root, tmp);		}		++iter;	}	xmlSaveFile(file.c_str(), doc);    xmlFreeDoc(doc);	xmlMutexUnlock(xmlmutex);	return true;}
开发者ID:divinity76,项目名称:YurOTS,代码行数:56,


示例23: xmlThrDefSetGenericErrorFunc

voidxmlThrDefSetGenericErrorFunc(void *ctx, xmlGenericErrorFunc handler) {    xmlMutexLock(xmlThrDefMutex);    xmlGenericErrorContextThrDef = ctx;    if (handler != NULL)        xmlGenericErrorThrDef = handler;    else        xmlGenericErrorThrDef = xmlGenericErrorDefaultFunc;    xmlMutexUnlock(xmlThrDefMutex);}
开发者ID:xuebai5,项目名称:TheNebulaDevice,代码行数:10,


示例24: xmlMemShow

voidxmlMemShow(FILE *fp, int nr ATTRIBUTE_UNUSED){#ifdef MEM_LIST  MEMHDR *p;#endif  if (fp != NULL)    fprintf(fp,"      MEMORY ALLOCATED : %lu, MAX was %lu/n",            debugMemSize, debugMaxMemSize);#ifdef MEM_LIST  xmlMutexLock(xmlMemMutex);  if (nr > 0)  {    fprintf(fp,"NUMBER   SIZE  TYPE   WHERE/n");    p = memlist;    while ((p) && nr > 0)    {      fprintf(fp,"%6lu %6lu ",p->mh_number,(unsigned long)p->mh_size);      switch (p->mh_type)      {      case STRDUP_TYPE:        fprintf(fp,"strdup()  in ");        break;      case MALLOC_TYPE:        fprintf(fp,"malloc()  in ");        break;      case MALLOC_ATOMIC_TYPE:        fprintf(fp,"atomicmalloc()  in ");        break;      case REALLOC_TYPE:        fprintf(fp,"realloc() in ");        break;      case REALLOC_ATOMIC_TYPE:        fprintf(fp,"atomicrealloc() in ");        break;      default:        fprintf(fp,"   ???    in ");        break;      }      if (p->mh_file != NULL)        fprintf(fp,"%s(%u)", p->mh_file, p->mh_line);      if (p->mh_tag != MEMTAG)        fprintf(fp,"  INVALID");      xmlMemContentShow(fp, p);      fprintf(fp,"/n");      nr--;      p = p->mh_next;    }  }  xmlMutexUnlock(xmlMemMutex);#endif /* MEM_LIST */}
开发者ID:vgurev,项目名称:freesurfer,代码行数:53,


示例25: xmlMemStrdupLoc

char *xmlMemStrdupLoc(const char *str, const char *file, int line){  char *s;  size_t size = strlen(str) + 1;  MEMHDR *p;  if (!xmlMemInitialized) xmlInitMemory();  TEST_POINT  p = (MEMHDR *) malloc(RESERVE_SIZE+size);  if (!p)  {    goto error;  }  p->mh_tag = MEMTAG;  p->mh_size = size;  p->mh_type = STRDUP_TYPE;  p->mh_file = file;  p->mh_line = line;  xmlMutexLock(xmlMemMutex);  p->mh_number = ++block;  debugMemSize += size;  debugMemBlocks++;  if (debugMemSize > debugMaxMemSize) debugMaxMemSize = debugMemSize;#ifdef MEM_LIST  debugmem_list_add(p);#endif  xmlMutexUnlock(xmlMemMutex);  s = (char *) HDR_2_CLIENT(p);  if (xmlMemStopAtBlock == p->mh_number) xmlMallocBreakpoint();  if (s != NULL)    strcpy(s,str);  else    goto error;  TEST_POINT  if (xmlMemTraceBlockAt == s)  {    xmlGenericError(xmlGenericErrorContext,                    "%p : Strdup() Ok/n", xmlMemTraceBlockAt);    xmlMallocBreakpoint();  }  return(s);error:  return(NULL);}
开发者ID:vgurev,项目名称:freesurfer,代码行数:53,


示例26: xmlThrDefDeregisterNodeDefault

xmlDeregisterNodeFuncxmlThrDefDeregisterNodeDefault(xmlDeregisterNodeFunc func){    xmlDeregisterNodeFunc old;    xmlMutexLock(xmlThrDefMutex);    old = xmlDeregisterNodeDefaultValueThrDef;        __xmlRegisterCallbacks = 1;    xmlDeregisterNodeDefaultValueThrDef = func;    xmlMutexUnlock(xmlThrDefMutex);    return(old);}
开发者ID:Open-SFC,项目名称:ond-of-driver,代码行数:14,


示例27: xmlThrDefParserInputBufferCreateFilenameDefault

xmlParserInputBufferCreateFilenameFuncxmlThrDefParserInputBufferCreateFilenameDefault(xmlParserInputBufferCreateFilenameFunc func){    xmlParserInputBufferCreateFilenameFunc old;        xmlMutexLock(xmlThrDefMutex);    old = xmlParserInputBufferCreateFilenameValueThrDef;    if (old == NULL) {		old = __xmlParserInputBufferCreateFilename;	}    xmlParserInputBufferCreateFilenameValueThrDef = func;    xmlMutexUnlock(xmlThrDefMutex);    return(old);}
开发者ID:Open-SFC,项目名称:ond-of-driver,代码行数:16,


示例28: xmlThrDefOutputBufferCreateFilenameDefault

xmlOutputBufferCreateFilenameFuncxmlThrDefOutputBufferCreateFilenameDefault(xmlOutputBufferCreateFilenameFunc func){    xmlOutputBufferCreateFilenameFunc old;        xmlMutexLock(xmlThrDefMutex);    old = xmlOutputBufferCreateFilenameValueThrDef;#ifdef LIBXML_OUTPUT_ENABLED    if (old == NULL) {		old = __xmlOutputBufferCreateFilename;	}#endif    xmlOutputBufferCreateFilenameValueThrDef = func;    xmlMutexUnlock(xmlThrDefMutex);    return(old);}
开发者ID:Open-SFC,项目名称:ond-of-driver,代码行数:17,


示例29: xmlMemDisplay

voidxmlMemDisplay(FILE *fp){#ifdef MEM_LIST    MEMHDR *p;    unsigned idx;    int     nb = 0;#if defined(HAVE_LOCALTIME) && defined(HAVE_STRFTIME)    time_t currentTime;    char buf[500];    struct tm * tstruct;#endif#endif    FILE *old_fp = fp;    if (fp == NULL) {        fp = fopen(".memorylist", "w");        if (fp == NULL)            return;    }#ifdef MEM_LIST#if defined(HAVE_LOCALTIME) && defined(HAVE_STRFTIME)    currentTime = time(NULL);    tstruct = localtime(&currentTime);    strftime(buf, sizeof(buf) - 1, "%I:%M:%S %p", tstruct);    fprintf(fp,"      %s/n/n", buf);#endif        fprintf(fp,"      MEMORY ALLOCATED : %lu, MAX was %lu/n",            debugMemSize, debugMaxMemSize);    fprintf(fp,"BLOCK  NUMBER   SIZE  TYPE/n");    idx = 0;    xmlMutexLock(xmlMemMutex);    p = memlist;    while (p) {          fprintf(fp,"%-5u  %6lu %6lu ",idx++,p->mh_number,                  (unsigned long)p->mh_size);        switch (p->mh_type) {           case STRDUP_TYPE:fprintf(fp,"strdup()  in ");break;           case MALLOC_TYPE:fprintf(fp,"malloc()  in ");break;           case REALLOC_TYPE:fprintf(fp,"realloc() in ");break;           case MALLOC_ATOMIC_TYPE:fprintf(fp,"atomicmalloc()  in ");break;           case REALLOC_ATOMIC_TYPE:fprintf(fp,"atomicrealloc() in ");break;           default:                fprintf(fp,"Unknown memory block, may be corrupted");                xmlMutexUnlock(xmlMemMutex);                if (old_fp == NULL)                    fclose(fp);                return;        }        if (p->mh_file != NULL) fprintf(fp,"%s(%u)", p->mh_file, p->mh_line);        if (p->mh_tag != MEMTAG)              fprintf(fp,"  INVALID");        nb++;        if (nb < 100)            xmlMemContentShow(fp, p);        else            fprintf(fp," skip");        fprintf(fp,"/n");        p = p->mh_next;    }    xmlMutexUnlock(xmlMemMutex);#else    fprintf(fp,"Memory list not compiled (MEM_LIST not defined !)/n");#endif    if (old_fp == NULL)        fclose(fp);}
开发者ID:151706061,项目名称:VTK,代码行数:71,


示例30: xmlMemFree

/** * xmlMemFree: * @ptr:  the memory block pointer * * a free() equivalent, with error checking. */voidxmlMemFree(void *ptr){    MEMHDR *p;    char *target;#ifdef DEBUG_MEMORY    size_t size;#endif    if (ptr == (void *) -1) {        xmlGenericError(xmlGenericErrorContext,            "trying to free pointer from freed area/n");        goto error;    }    if (xmlMemTraceBlockAt == ptr) {        xmlGenericError(xmlGenericErrorContext,                        "%p : Freed()/n", xmlMemTraceBlockAt);        xmlMallocBreakpoint();    }    TEST_POINT    target = (char *) ptr;    p = CLIENT_2_HDR(ptr);    if (p->mh_tag != MEMTAG) {        Mem_Tag_Err(p);        goto error;    }    if (xmlMemStopAtBlock == p->mh_number) xmlMallocBreakpoint();    p->mh_tag = ~MEMTAG;    memset(target, -1, p->mh_size);    xmlMutexLock(xmlMemMutex);    debugMemSize -= p->mh_size;    debugMemBlocks--;#ifdef DEBUG_MEMORY    size = p->mh_size;#endif#ifdef MEM_LIST    debugmem_list_delete(p);#endif    xmlMutexUnlock(xmlMemMutex);    free(p);    TEST_POINT#ifdef DEBUG_MEMORY    xmlGenericError(xmlGenericErrorContext,            "Freed(%d) Ok/n", size);#endif        return;    error:        xmlGenericError(xmlGenericErrorContext,            "xmlMemFree(%lX) error/n", (unsigned long) ptr);    xmlMallocBreakpoint();    return;}
开发者ID:151706061,项目名称:VTK,代码行数:67,



注:本文中的xmlMutexUnlock函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


C++ xmlNewChild函数代码示例
C++ xmlMutexLock函数代码示例
万事OK自学网:51自学网_软件自学网_CAD自学网自学excel、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。