Closed. This question is off-topic。它当前不接受答案。
                            
                        
                    
                
                            
                                
                
                        
                            
                        
                    
                        
                            想改善这个问题吗? Update the question,所以它是on-topic,用于堆栈溢出。
                        
                        2年前关闭。
                                                                                            
                
        
我目前正在执行level02上的Exploit-Exercises,在脚本中我看到了一个名为'asprintf',asprintf(&buffer, "/bin/echo %s is cool" , getenv("USER")); buffer = null;的函数。在此函数调用之前。

请用简单的英语向我解释此功能的作用以及为什么存在该功能,我知道还有另一篇文章问同样的事情,但是对我没有太大帮助。 (是的,我阅读了手册页!)

请不要忽略或删除问题,这不是第一次(向主持人的消息)。

最佳答案

我认为您提到的asprintf函数是sprintf的变体,特定于glibc标准库。该函数的第一个参数不是像sprintf那样的字符数组的指针,而是指向char *变量的指针,该变量将保存新分配的char数组的地址。也就是说,asprintf函数的作用与sprintf相同,但它不是为固定大小的char数组工作,而是为其生成的字符串分配空间。 asprintf分配的数组必须在稍后的某个时刻由调用方释放。

关于c - C语言中的asprintf函数,它有什么作用? ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47092770/

10-08 21:55