realloc引用说:
该功能可以将存储块移动到新位置,在这种情况下返回新位置.
这是否意味着如果我这样做:
void foo() {
void* ptr = malloc( 1024 );
unsigned char* cptr = ( unsigned char* )ptr+256;
ptr = realloc( ptr, 4096 );
}
Run Code Online (Sandbox Code Playgroud)
那么如果realloc移动块,cptr可能会变为无效?
如果是,那么以任何方式重新分配信号,它将移动块,以便我可以做一些事情来防止cptr变得无效?
我有这个功能:
private Node getDOM(String str) throws SearchEngineException {
DOMResult result = new DOMResult();
try {
XMLReader reader = new Parser();
reader.setFeature(Parser.namespacesFeature, false);
reader.setFeature(Parser.namespacePrefixesFeature, false);
Transformer transformer = TransformerFactory.newInstance().newTransformer();
transformer.transform(new SAXSource(reader,new InputSource(new StringReader(str))), result);
} catch (Exception ex) {
throw new SearchEngineException("NukatSearchEngine.getDom: " + ex.getMessage());
}
return result.getNode();
}
Run Code Online (Sandbox Code Playgroud)
它需要一个String,它包含一个POST请求后由http服务器发送的html文档,但无法正确解析它 - 我只得到整个文档中的四个节点.字符串本身看起来很好 - 如果我将其打印出来并将其复制到文本文档中,我会看到我期望的页面.
当我使用上述方法的重载版本时:
private Node getDOM(URL url) throws SearchEngineException {
DOMResult result = new DOMResult();
try {
XMLReader reader = new Parser();
reader.setFeature(Parser.namespacesFeature, false);
reader.setFeature(Parser.namespacePrefixesFeature, false);
Transformer transformer = …Run Code Online (Sandbox Code Playgroud)