我正在尝试一个可以进行浮点运算的flex/bison计算器.我的flex代码看起来像这样
%{
#include "calc.tab.h"
#include <stdlib.h>
void yyerror(char *s);
%}
digit [0-9]
integer {digit}+
real ({digit}+[.]{digit}*)|({digit}*[.]{digit}+)
exp ({integer}|{real})[eE]-?{integer}
%%
({integer}|{real}|{exp}) { yylval = atof(yytext); return NUMBER; }
[-+*/\n] { return *yytext; }
[ \t\v\f\r] { }
. { yyerror("Unknown Character"); }
%%
int yywrap(void)
{
return 1;
}
Run Code Online (Sandbox Code Playgroud)
我的野牛代码看起来像这样
%{
#include <stdio.h>
typedef double YYSTYPE;
#define YYSTYPE_IS_DECLARED
void yyerror(char *s);
extern char *yytext;
extern int yylineno;
%}
%token NUMBER
%left '+' '-'
%left '*' '/'
%%
program: program expr '\n' …Run Code Online (Sandbox Code Playgroud) 可能重复:
删除包含C++ STL中的向量的动态分配对象
我有这样的结构
struct foo {
vector<int> myvector;
};
Run Code Online (Sandbox Code Playgroud)
现在,我创建一个指向foo的指针,调整大小并将一些元素插入到向量中.
foo *myfoo = new foo;
myfoo->myvector.resize(100);
myfoo->myvector.push_back(0);
myfoo->myvector.push_back(1);
... // and so on
Run Code Online (Sandbox Code Playgroud)
现在,在myfoo超出范围之前,我将不得不释放分配给它的内存
delete myfoo;
Run Code Online (Sandbox Code Playgroud)
我的问题是,这是否会照顾我的myvector?我有这个特殊的查询,因为现在myvector被调整大小,STL库可能会在堆中分配容器.所以,当我释放myfoo时,我不希望分配给myvector的内存泄漏.