【发布时间】:2012-08-03 00:22:28
【问题描述】:
我正在创建脚本语言。 当我分配东西时,它分配了东西并返回地址 然后我用它做任何事情然后删除它。我无法控制其中的变量 就像在我的 lang 中创建结构(使用指针和 bool 来检查指针是否指向有效数据的结构)等等,因为它会使我的 lang 在 RAM 中变得更慢和更大。
例如:(我的脚本语言很容易理解。我怀疑你不会明白,但我还是会在里面放一些cmets)
MyStruct = { //Function. For create object with it use 'new' before it.
TestAliveVar=0
}
Func = { //I'll explain what exactly this function does every place it runs.
if (!exists(arg0)) //C++: ???
exit;
arg0.TestAliveVar=1
println "Still alive!";
}
var MyVar=new MyStruct(); //Returns address of the new object in the heap
//and runs on it the `MyStruct` function.
Func(MyVar); //Sets his 'TestAliveVar' to 1
//and prints 'Still Alive!' with new line
delete(MyVar); //C++: free(MyVar);
Func(MyVar); //Does nothing
问题是如何创建您在这段代码中看到的函数exists。
顺便说一句,我可以在这个语言中运行 C++ 代码。
【问题讨论】:
-
很难想象保持“有效”标志可能比测试指针的有效性要慢。
-
@Ugo 如果我在没有 struct 的情况下将指针发送到代码中的任何地方,并将其删除,那么我如何检查指针是否仍然有效?
-
@BenVoigt 如果我考虑如何在我的语言中实现这一点。它将适合任何表达式的值记忆等等。顺便说一句,我在我的语言中的价值观也很大,我认为我不需要让它变得更大。
-
我的意思是检查指针是否“有效”会产生很多误报,而且速度也非常慢。即使您对结构进行性能打击,这仍然比您询问的设计要快。
标签: c++ pointers null interpreter