alloca()在堆栈上而不是在堆上分配内存,如同的情况一样malloc().所以,当我从例程返回时,内存被释放.所以,实际上这解决了我释放动态分配内存的问题.释放分配的内存malloc()是一个令人头痛的问题,如果不知何故错过会导致各种内存问题.
alloca()尽管有上述特征,为什么不鼓励使用?
可能重复:
如何确定C中文件的大小?
如何找出用C语言编写的应用程序打开的文件大小?我想知道大小,因为我想把加载文件的内容放入一个我分配的字符串中malloc().只是写作malloc(10000*sizeof(char));是恕我直言,一个坏主意.
我正在尝试解决Haskell中的函数式编程练习的问题.我必须实现一个函数,在给定一个具有偶数个字符的字符串的情况下,该函数返回相同字符串并交换字符对.
像这样:
"helloworld" - >"ehllworodl"
这是我目前的实施:
swap :: String -> String
swap s = swapRec s ""
where
swapRec :: String -> String -> String
swapRec [] result = result
swapRec (x:y:xs) result = swapRec xs (result++[y]++[x])
Run Code Online (Sandbox Code Playgroud)
我的函数返回正确的结果,但编程练习是定时的,看起来我的代码运行得太慢了.
我能做些什么来让我的代码运行得更快,或者我是否采用了错误的方法解决问题?
所以,我目前正在开发一个广泛使用Protocol Buffers的项目,主要是作为一种在键值数据库中存储复杂对象的方法.
迁移到Flat Buffers是否会在性能方面提供相当大的好处?
更一般地说,是否有充分的理由使用Protocol Buffers而不是Flat Buffers?
最近我看到了一些与此类似的C++代码
class MyClass {
public:
MyClass(std::unique_ptr< MyType > myValue)
: _myValue(std::move(myValue)) {}
std::unique_ptr< MyType > _myValue;
};
Run Code Online (Sandbox Code Playgroud)
这是初始化unique_ptr的正确方法吗?是不是显式std :: move不必要?